我正在阅读一些关于变量范围的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 1
和2
中,变量i
在声明和初始化之前使用,但为什么Case 2出错? (我已经阅读了一个解释,因为我是案例1中的全局变量,但仍想知道是否有其他解释)
答案 0 :(得分:7)
int i
是案例1中的类变量。定义类时,还定义了class
范围内定义的所有变量,而不是每个method
。< / p>
在案例2中,您将变量定义为method
的一部分,并在您使用它之后。
答案 1 :(得分:1)
在案例1中,变量i被声明为实例变量,因此如果您声明一个首先使用它的函数然后变量声明它完全有效,因为当您调用该方法时,该变量已经自动初始化。 / p>
在案例2中,变量i是函数的局部变量,所以这样做是无效的。
答案 2 :(得分:0)
在类代码块中声明变量,使其成为成员变量,该变量至少可用于类中的任何函数。如果您创建另一个函数,它也可以引用“i”。当实例化类的对象时,将对变量进行delcared。
它在第二类中不起作用,因为事先没有声明它。