无用类型测试¶
ID: cs/useless-type-test
Kind: problem
Security severity:
Severity: warning
Precision: medium
Tags:
- maintainability
- language-features
- external/cwe/cwe-561
Query suites:
- csharp-security-and-quality.qls
对于任何类型 B
,从 B
派生的类型的实例也是 B
的实例。无需对此进行显式测试。
建议¶
删除无用的类型测试。
示例¶
在此示例中,类 Sub
扩展了类 Super
。初始化 Sub
的新实例 sub
,并检查它是否是 Super
的实例。由于 Sub
扩展了 Super
,因此无需测试 sub
是否为 Super
,因为它保证是这种情况。
class UselessTypeTest
{
class Super { }
class Sub : Super { }
static void Main(string[] args)
{
Sub sub = new Sub();
if (sub is Super)
{
Console.WriteLine("Surprise! sub is a Super!");
}
}
}