C#では、List(T)などのコンテナークラスが最初にIEnumerableなどのコンテナーインターフェイスにアップキャストされ、その後foreachを使用して繰り返されると、ランタイムガベージが作成されると言われました。また、完全にダウンキャストされている場合でも、Collection(T)を反復処理すると、ヒープ上に参照が作成されると言われました。これは、参照型または値型の結果を返す可能性のあるGetEnumerator()への仮想呼び出しの結果であることを理解しています。
値の型についてMSDNドキュメントを調べると、すべての列挙が値の型として明確にリストされています。列挙型が列挙型リストで構成されている場合、これらの列挙型はドキュメントのとおりの値型ではありませんか?彼らは箱入りですか?または、互いに完全に無関係ですが、名前は似ていますか?または完全に何か他のもの?
これらの2つのステートメントを統合する方法がわからないので、誰かがそれをもっとわかりやすく説明してくれることを望んでいました。
ありがとう。
編集:「決して」や「不要」などの単語の使用に関するコメント投稿者の提案を考慮して言い換えられた質問