歴史的に、.Netで開発するとき、ネストされたスコープで変数の名前を複製できませんでした。ただし、最近Visual Studio 2019をバージョン16.4.2に更新した後、変数名がネストされたスコープで重複する可能性があることに気付きました。
例えば:
var test = "hello";
Console.WriteLine(test);
var things = new []{"one", "two", "three"};
things.Select(test => // <- test is duplicated here, normally this breaks compilation
{
Console.WriteLine(test);
return test;
}).ToList();
// output:
// hello
// one
// two
// three
https://dotnetfiddle.net/h85BK4
なぜこれが突然許可されるのですか?
追加質問:これが新しい言語の「機能」である場合、ネストされたスコープで変数が複製されたときにVisual Studioが引き続きブレークするように構成する方法はありますか?
@ LP13
—
エイミー
test
提案されたようにタイプを変更しても効果はありません。質問にリンクされているフィドルで試すことができます。
ターゲットのフレームワークは無関係です。新しい動作は言語バージョンによるものです。C#8、それはC#7.3でコンパイルできない(と私は仮定の下)上のコードのコンパイル
—
エマニュエルVintilă
そのためのGitHubの問題があります。マイルストーンは16.5に設定されています。@OrkhanAlikhanovあなたはそれをより早く見つけました:)
—
Pavel Anikhouski
test
データ型が同じなので、同じ変数を使用します。 たとえば、test
変数を宣言してみてくださいint
。var test = 12345;
コンパイルエラーになると思います。(私は試していません)