C# での yield
キーワードの素晴らしい使用法: 反復とメモリ管理
C# では、yield
キーワードがイテレータとジェネレータを構築する鍵となります。質問のコード スニペットを分析して、その機能を理解しましょう:
<code class="language-csharp">IEnumerable<object> FilteredList() { foreach(object item in FullList) { if(IsItemInPartialList(item)) yield return item; } }</code>
このコンテキストでは、yield
キーワードの機能は多面的です:
yield
により、FilteredList
メソッドが反復子になることができます。イテレーターは、メソッドがコレクション全体を一度に返すのではなく、一度に 1 つずつ値を生成できるようにするカスタム反復メカニズムを提供します。 foreach
は遅延評価を容易にします。このメソッドが反復されると、基準を満たす各項目が「生成」され、カプセル化されたロジックがトリガーされて、その項目を部分リストに含めるべきかどうかを判断します。 yield
yield
yield
<code class="language-csharp">public IEnumerable<int> Integers() { yield return 1; yield return 2; yield return 4; yield return 8; yield return 16; yield return 16777216; }</code>ステートメントは次の整数を生成し、過剰なメモリ割り当てを効果的に防ぎます。
yield
yield
以上が`every`キーワードは、C#の反復とメモリ管理をどのように強化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。