[解決済み] Resharperのサンプルコードで「IEnumerableの複数列挙の可能性」を説明する。
2023-07-16 05:10:02
質問
Resharperが警告を出すことがあります。
IEnumerableの複数列挙の可能性
そこに この問題をどのように扱うかについてのSO質問 また、ReSharper のサイトでは はこちら . 代わりにこうしろというサンプルコードもあります。
IEnumerable<string> names = GetNames().ToList();
2つのfor-eachループで2回コレクションを列挙することになりませんか?
どのように解決するのですか?
GetNames()
は
IEnumerable
. ですから、その結果を保存すると
IEnumerable foo = GetNames();
そうすると、列挙するたびに
foo
を列挙するたびに、その
GetNames()
メソッドが再び呼び出されます (文字通りの意味ではなく、詳細をきちんと説明しているリンクが見つかりませんが
IEnumerable.GetEnumerator()
).
これを見たResharperは
結果
を列挙して
GetNames()
をローカル変数で、例えばリストで実体化することによって列挙します。
IEnumerable fooEnumerated = GetNames().ToList();
これによって
GetNames()
の結果が一度だけ列挙されるようにします。
fooEnumerated
.
これは重要なことで、例えば
GetNames()
が(遅い)データベース呼び出しを実行するときなどです。
なぜなら、あなたは
マテリアライズ
を列挙することはもう問題ではありません。
fooEnumerated
を2回列挙することはもう問題ではなく、メモリ内のリストに対して2回反復することになります。
関連
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] IEnumerableの複数列挙の可能性に関する警告の処理
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み] IEnumerableの複数列挙の可能性に関する警告の処理