C#中的作用域变量?
我正在阅读一些关于变量范围的C#文本,并感到有些困惑: 案例1: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会出错?(我已经阅读了一个
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是函数的局部变量,因此这样做是无效的