Fields
是类或结构中的变量,local variables
位于方法中,global variables
可在每个范围内访问(包括类和方法)。
这让我觉得fields
可能是global variables
,但global variables
不一定是fields
,尽管我无法想到一个坐在课堂外的变量。
这两者之间有明显的区别吗?
答案 0 :(得分:6)
你标记了这个C#,C#并没有真正的全局变量'。
但是public static
字段(或属性)会接近。静态使它变得单一,并赋予它一个全局的“全局”。寿命。
答案 1 :(得分:1)
全局变量是您所说的整个范围内访问的变量,通常这是通过static
类完成的。示例代码:
public class Demo {
public static string ThisIsGlobal = "Global";
private string _field = "this is a field in the class";
public void DoSomething()
{
string localVariable = "Local";
string localVariable2 = ThisIsGlobal; // VALID
}
public static void GlobalMethod()
{
string localVariable = _field; // THIS IS NOT VALID!
}
}
很多人说全局变量和状态都不好,我不这么认为,只要你使用它就应该使用它。在上面的示例中,ThisIsGlobal
是一个全局变量,因为它具有static
关键字。正如您在示例中看到的,您可以从实例方法访问静态变量,但不能从静态方法访问实例变量。
答案 2 :(得分:1)
我认为维基百科的定义在这里是合适的:
在面向对象的编程中,字段(也称为数据成员或成员变量)是封装在类或对象中的数据。对于常规字段(也称为实例变量),对于对象的每个实例都有一个实例变量:例如,Employee类具有Name字段,每个雇员有一个不同的名称。静态字段(也称为类变量)是一个变量,由所有实例共享。
因此,全局变量几乎是一个静态字段(因此,一个字段)。
答案 3 :(得分:0)
许多变量位于类的特定实例之外,但它们仍然包含在“某个”类中。基本上,全局变量位于对象图的顶部天空中的高位,在对象图中所有后来/下层/成员都可以看到/引用它。
但是全局变量仍然只是某个类/模块的一个字段。