代码检查:冗余的 'IEnumerable.Cast<T>' 或 'IEnumerable.OfType<T>' 调用
当在已经保证其所有元素均为类型 T 的集合上使用 Enumerable.Cast<T>() 或 Enumerable.OfType<T>() 方法时,此检查会报告不必要的复杂性。
在 Cast<T>() 的情况下,该调用不会改变语义,可以安全地移除以提高清晰度和可读性。
在 OfType<T>() 的情况下,如果集合包含 null 值,移除该调用可能会改变代码的语义,因为这些值会被此调用过滤掉。
在下面的示例中,该方法将对来自 list 的所有元素进行类型化,这些元素不是 null。 重写版本保留了语义,但更清楚地展示了发生了什么。
void CountRealStrings(List<string> list)
{
Console.WriteLine(list.OfType<string>().Count());
}
void CountRealStrings(List<string> list)
{
Console.WriteLine(list.Where(item => item != null).Count());
}
最后修改日期: 2025年 9月 27日