Fields
是类或结构体内的变量,局部变量
位于方法内部,而全局变量
可以在任何范围内访问(包括类和方法)。
这让我想到fields
可能是全局变量
,但是全局变量
不一定是fields
,尽管我无法想象出一个坐落在类外部的变量。
这两者之间是否有明显的区别?
但是一个public static字段(或属性)会接近于全局变量。static使其成为单一的,并赋予了它“全局”的生命周期。
static
关键字只能用于字段吗?还是也可以用于全局变量? - Arthur Mamou-Mani全局变量是可以在整个范围内访问的变量,通常使用 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
关键字。正如你在例子中看到的,你可以从实例方法访问静态变量,但不能从静态方法访问实例变量。static
关键字是否也可以用于“全局变量”? - Arthur Mamou-Manistatic
,但不能说它是全局的,因为它是static
。它可以是private static
,这并不使它成为“全局”的,在这种情况下,它被该类型的所有实例共享。 - Tomas Jansson许多变量位于类的特定实例之外,但它们仍然都包含在“某个”类中。基本上,全局变量位于对象图的顶部 高空中,可以被对象图中后面/较低的所有类/成员看到/引用。
但是全局变量仍然只是某个类/模块的字段。
全局变量
是其他东西的字段吗?最后,我能可视化这个对象图
吗? - Arthur Mamou-Mani