欠落している IEnumerable ForEach Extension の奇妙なケース
C# に Zip
関数がないことに関する最近の議論により、関連する質問が生じました。なぜ C# は、広く使用されている ForEach
インターフェイスに IEnumerable
拡張メソッドを提供しないのですか? 興味深いことに、この機能は List<T>
のみに含まれています。
謎を解く
この省略はパフォーマンスの最適化ですか?それとももっと深い根本的な理由があるのでしょうか? いくつかの理論が、この顕著なギャップを説明しようと試みています。
組み込まれた foreach
の利点
ある観点からは、C# の組み込み foreach
ステートメントがほとんどの反復ニーズに適切に対応していることがわかります。 簡潔で読みやすい構文が好まれることがよくあります:
<code class="language-csharp">foreach (Item item in list) { item.DoSomething(); }</code>
これは、拡張メソッドのより冗長な構文とは対照的です。
<code class="language-csharp">list.ForEach(item => item.DoSomething());</code>
ForEach
拡張機能の引数
しかし、特定の状況における ForEach()
拡張メソッドの実際的な利点を主張する人もいます。 これらの利点には以下が含まれます:
foreach
ステートメントの実行時チェックとは異なり、コンパイル時の型チェックを提供します。ForEach()
呼び出しをチェーンできることは説得力のある利点です。視点の変化
当初は懐疑的でしたが、現在では特定のシナリオにおける ForEach()
拡張メソッドの価値を認識する人もいます。 この再評価は、Microsoft が将来のフレームワーク リリースで標準化された ForEach
メソッドの追加を検討する可能性があることを示唆しています。
IEnumerable
のこの拡張メソッドが存在しないことは、依然として議論のトピックです。 潜在的な利点を考慮すると、開発者コミュニティはさらなる開発を期待しており、このギャップが C# 拡張ライブラリで解決されることを期待しています。
以上がC# には IEnumerable の ForEach 拡張メソッドがないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。