“全局变量”和“字段”之间的区别?

时间:2012-10-16 11:42:53

标签: c# variables field concept

Fields是类或结构中的变量,local variables位于方法中,global variables可在每个范围内访问(包括类和方法)。

这让我觉得fields可能是global variables,但global variables不一定是fields,尽管我无法想到一个坐在课堂外的变量。

这两者之间有明显的区别吗?

4 个答案:

答案 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)

许多变量位于类的特定实例之外,但它们仍然包含在“某个”类中。基本上,全局变量位于对象图的顶部天空中的高位,在对象图中所有后来/下层/成员都可以看到/引用它。

但是全局变量仍然只是某个类/模块的一个字段。