C# で foreach ループがどのように機能するかについての基本を知っています (C# で foreach ループがどのように機能するか)
foreach を使用するとメモリが割り当てられ、ガベージ コレクションが発生する可能性があるかどうか疑問に思っています。(すべてのビルトイン システム タイプの場合)。
たとえば、System.Collections.Generic.List<T>
クラスで Reflector を使用すると、GetEnumerator の実装は次のようになります。
public Enumerator<T> GetEnumerator()
{
return new Enumerator<T>((List<T>) this);
}
使用するたびに、これは新しい列挙子 (およびより多くのガベージ) を割り当てます。
すべてのタイプがこれを行いますか?もしそうなら、なぜですか?(単一の列挙子を再利用することはできませんか?)