ReSharper 2026.1 Help

コードインスペクション: For ループは foreach ループに変換できます

コレクションを変更せずに、または反復変数にアクセスしてコレクションを反復処理する場合は、 for ループの代わりに foreach を使用することができます。 foreach ループの主な利点は、異なるコレクション型で動作するメソッドを作成できることです。 foreach ループは、 IEnumerable<T> インターフェース(実際には、 GetEnumerator メソッドを持つ任意の型)を実装するすべての型をサポートします。 さらに、 foreach を使用すると、多くの LINQ プロバイダがクエリ結果を IEnumerable<T> として返すため、LINQ クエリ結果を使用した作業が可能になります。

for ループで List を反復するメソッドがある場合、ある方法では、あなたのメソッドを他のコレクション型と連携させることができます。 次に IEnumerable<T> オブジェクトを反復できるように foreach を使用する必要があります。

次の例では、ReSharper が for の代わりに foreach を使用できると判断し、そのように提案します:

public void ViewCategories(List<string> categories) { for (int i = 0; i < categories.Count; i++) { Console.WriteLine(categories[i]); } }
public void ViewCategories(List<string> categories) { foreach (string c in categories) { Console.WriteLine(c); } }

言い換えれば、 IEnumerable<T> を渡すことができるため、 foreach を使用する場合、より広い範囲のコレクション型でメソッドを使用できます。 以下はそのようなメソッドの簡単な例です:

public void ViewCategories(IEnumerable<string> mycollection) { foreach (var s in mycollection) { Console.WriteLine(s); } }
2026 年 6 月 12 日