ちょうどわかった
foreach (int yield in items) {
yield return yield * 2;
}
また
int yield = 10;
は C# で有効なコードです。
コンパイラーが変数の利回りとイテレーターの利回りを区別するのは簡単かもしれないことは理解できますが、それでも混乱を招き、コードの可読性を低下させます。
許可されている正確な理由を知っていますか?
ちょうどわかった
foreach (int yield in items) {
yield return yield * 2;
}
また
int yield = 10;
は C# で有効なコードです。
コンパイラーが変数の利回りとイテレーターの利回りを区別するのは簡単かもしれないことは理解できますが、それでも混乱を招き、コードの可読性を低下させます。
許可されている正確な理由を知っていますか?
それが許可されている正確な理由を知っていますか?
はい。コンテキストキーワードyield
にすぎません。これはC#2で導入されたものであり、チームはすでに識別子として使用されているコードを壊したくありませんでした。yield
同じことが、1.0以降に導入された他のコンテキストキーワードにも当てはまりますpartial
。完全なリストについては、EricLippertのブログ投稿を参照してください。
しかし、それでも混乱が増し、コードの可読性が低下します
それで、それをしませんか?コードを本当に読みにくくするためにできることはいくつもあります。すべての変数名をアンダースコアにすることができます。
private int _;
private string __;
// etc
あなたはそれを行うのですか?yield
そうでない場合、なぜ人々が具体的に紛らわしいコードを書くことを期待するのでしょうか?
yield
コンテキストキーワードです。それは普通のキーワードかもしれませんが、彼らはそれを文脈上のキーワードにすることを選びました。
コンテキストキーワードの主な理由は、下位互換性です。言語に通常のキーワードを追加すると、古いバージョンの言語からコピーされているコードが破損する可能性があります。
たとえばyield
、通常のキーワードとして追加された後にこのコードをコンパイルすることを想像してみてください。
bool yield = false;
// bla bla
うまくいきませんね。新しいバージョンでコンパイルする前に、変数の名前を変更する必要があります。