JetBrains Rider 2026.1 Help

コードインスペクション:冗長な '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 日