コードインスペクション:冗長な 'IEnumerable.Cast<T>' または 'IEnumerable.OfType<T>' 呼び出し
このインスペクションは、すべての要素が T 型であることが既に保証されているコレクションに Enumerable.Cast<T>() または Enumerable.OfType<T>() メソッドが使用された場合、不必要な複雑さを報告します。
Cast<T>() の場合、呼び出しによってセマンティクスは変更されないため、明瞭性と読みやすさを向上させるために安全に削除できます。
OfType<T>() の場合、コレクションに null 値が含まれていると、この呼び出しによってフィルターされるため、呼び出しを削除するとコードのセマンティクスが変化する可能性があります。
以下の例では、メソッドは null ではない list のすべての要素を型付けします。 書き直されたバージョンではセマンティクスが保持されますが、何が起こっているかがよりわかりやすくなっています。
void CountRealStrings(List<string> list)
{
Console.WriteLine(list.OfType<string>().Count());
}
void CountRealStrings(List<string> list)
{
Console.WriteLine(list.Where(item => item != null).Count());
}
2026 年 6 月 12 日