[解決済み] 普通の IEnumerable を使用することができるのに、なぜ yield キーワードを使用するのですか?
2022-04-23 15:25:58
質問
このコードが与えられた。
IEnumerable<object> FilteredList()
{
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
yield return item;
}
}
なぜこのようにコーディングしてはいけないのでしょうか?
IEnumerable<object> FilteredList()
{
var list = new List<object>();
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
list.Add(item);
}
return list;
}
の内容はなんとなくわかりますが
yield
というキーワードがあります。 これはコンパイラにある種のもの(イテレータ)を構築するように指示するものです。 しかし、なぜそれを使うのでしょうか? コードが若干少なくなることを除けば、それが何の役に立つのか?
どのように解決するのか?
使用方法
yield
は、コレクションを
を遅延させる。
最初の5つの項目だけが必要だとしましょう。 あなたのやり方だと
リスト全体
を取得することができます。 とは
yield
のように、最初の5つの項目だけをループしています。
関連
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み] Task.Runの正しい使い方とasync-awaitだけの使い方
-
[解決済み】C#のyieldキーワードは何に使われるのか?
-
[解決済み】なぜparamsキーワードを使用するのですか?
-
[解決済み】オブジェクトを渡すときに'ref'キーワードを使用するのはなぜですか?
-
[解決済み】JavaScriptのyieldキーワードは何ですか?
-
[解決済み】C#のvarキーワードの使い方
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み】C#のyieldキーワードは何に使われるのか?