JetBrains Rider 2025.2 Help

代码检查:冗余的 'IEnumerable.Cast<T>' 或 'IEnumerable.OfType<T>' 调用

当在已经保证其所有元素均为类型 T 的集合上使用 Enumerable.Cast<T>()Enumerable.OfType<T>() 方法时,此检查会报告不必要的复杂性。

Cast<T>() 的情况下,该调用不会改变语义,可以安全地移除以提高清晰度和可读性。

OfType<T>() 的情况下,如果集合包含 null 值,移除该调用可能会改变代码的语义,因为这些值会被此调用过滤掉。

在下面的示例中,该方法将对来自 列表 的所有元素进行类型化,这些元素不是 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月 26日