强制转换为同一类型¶
ID: cs/useless-cast-to-self
Kind: problem
Security severity:
Severity: warning
Precision: medium
Tags:
- maintainability
- language-features
- external/cwe/cwe-561
Query suites:
- csharp-security-and-quality.qls
将表达式强制转换为其已有的类型没有任何意义,只会使代码混乱。这表明对表达式的类型存在混淆,或者代码已被部分重构。
此查询适用于 ()
运算符和 as
运算符。
建议¶
在所有情况下,都应删除冗余的强制转换。
示例¶
以下示例显示了一个 getter,其中返回值被显式强制转换为 int
。但这没有必要,因为表达式 properties["Size"]
的类型已经是 int
。
Dictionary<string, int> properties;
public int Size
{
get { return (int)properties["Size"]; }
}
通过删除无用的 (int)
可以解决此问题。
Dictionary<string, int> properties;
public int Size
{
get { return properties["Size"]; }
}