以下のコードを参照してください。
public static int Main()
{
int j = 20;
for (int i=0; i < 10; i++)
{
int j = 30; //can't do this
Console.WriteLine(j + i);
}
return 0;
}
ここでは変数の非表示を行わず、エラーが発生するため、C#でエラーが発生します:
'j'という名前のローカル変数は、'親または現在の'スコープですでに使用されている'j'とは異なる意味を与えるため、このスコープで宣言することはできません。
上記のプログラムをc++で実行すると機能し、c++ではこの状況での変数の非表示をサポートします。
今私の質問は、これの背後にある理由は何ですか?
C#開発者がここに隠れることをサポートしないことにした理由。
なぜC++はここに隠れることを許可するのですか?