3

これを C# で記述した場合:

for(int myVar = 0; myVar<10; myVar++)
{
//do something here
}

//then, if I try:
int myVar = 8;
//I get some error that the variable is already declared.

//but if I try:
Console.WriteLine(myVar);
//then I get the error that the variable is not declared.

私が最も言う少し混乱。なぜC#コンパイラがそれを行うのか知っている人はいますか?

4

4 に答える 4

1

'myVar' という名前のローカル変数は、'myVar' に別の意味を与えるため、このスコープでは宣言できません。'myVar' は、'子' スコープで別のものを示すために既に使用されています。

両方の変数が同じスコープで宣言されています。(子スコープの 1 つで、 2 回宣言することはできません) 変数を 2 回宣言することはできません。スコープ
を 変更すると、もう一度宣言することができます。

private void myMethod()
{
   //Start of method scope 

   for (int myVar = 0; myVar < 10; myVar ++)
   {
      //Start of child scope
      //End of child scope
   }

   //End of method scope
}

private void anotherMethod()
{
   // A different scope 
   int myVar = 0 
}
于 2013-04-30T19:10:21.220 に答える
0

非常に奇妙に見えますが、C# では、次のようにいくつかの中括弧を使用するだけで、いくつかのコード行を区切ることができます。

for(int myVar = 0; myVar<10; myVar++)
{
//do something here
}

{
   //then, if I try:
   int myVar = 8;
   //I get some error that the variable is already declared.

   //but if I try:
   Console.WriteLine(myVar);
   //then I get the error that the variable is not declared.
}
于 2013-04-30T19:09:08.317 に答える