C#中的作用域变量?

C#中的作用域变量?,c#,scope,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; } } 在情况1和2中,变量i在声明和初始化之前使用,但为什么情况2会出错?(我已经阅读了一个

我正在阅读一些关于变量范围的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;
     }
}

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

int I
在案例1中是一个类变量。定义类时,还定义了
范围内定义的所有变量,而不是每个
方法


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

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


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

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

在情况2中,变量i是函数的局部变量,因此这样做是无效的