第一の文:String.Join("", query)
のこれらのlinq出力はなぜ異なっていますか?
IEnumerable<char> query = "Not what you might expect";
query = query.Where (c => c != 'a');
query = query.Where (c => c != 'e');
query = query.Where (c => c != 'i');
query = query.Where (c => c != 'o');
query = query.Where (c => c != 'u');
出力:"Nt wht y mght xpct"
第二の文:
query = "Not what you might expect";
foreach (char vowel in "aeiou")
query = query.Where (c => c != vowel);
String.Join("", query)
の出力:"Not what yo might expect"
これらのステートメントからの出力は異なります。 理由を説明できる人はいますか?クエリで
ラムダは、ループ変数vowel
をキャプチャ:
どのような出力が得られますか? – Default
この結果は、対象とする.NETのバージョンに依存します。これはどちらのバージョンですか? – goric
これは実際にコードがどのように構造化されていますか? 2番目の例では 'vowel'の値を上げる必要があります。それ以外の場合は'!= 'u''として5回だけ実行されます。 –