C#中的范围变量?

时间:2011-08-01 15:06:50

标签: c# scope

我正在阅读一些关于变量范围的C#文本并且有些困惑:

案例1:

class A
{
   void F() {
      i = 1;
   }
   int i = 0;
}

案例2

class A
{
    void F()
    {
         i = 1;  // Error, use precedes declaration
         int i = 0;
     }
}

case 12中,变量i在声明和初始化之前使用,但为什么Case 2出错? (我已经阅读了一个解释,因为我是案例1中的全局变量,但仍想知道是否有其他解释)

3 个答案:

答案 0 :(得分:7)

int i是案例1中的类变量。定义类时,还定义了class范围内定义的所有变量,而不是每个method。< / p>

在案例2中,您将变量定义为method的一部分,并在您使用它之后。

答案 1 :(得分:1)

在案例1中,变量i被声明为实例变量,因此如果您声明一个首先使用它的函数然后变量声明它完全有效,因为当您调用该方法时,该变量已经自动初始化。 / p>

在案例2中,变量i是函数的局部变量,所以这样做是无效的。

答案 2 :(得分:0)

在类代码块中声明变量,使其成为成员变量,该变量至少可用于类中的任何函数。如果您创建另一个函数,它也可以引用“i”。当实例化类的对象时,将对变量进行delcared。

它在第二类中不起作用,因为事先没有声明它。

相关问题