为什么在静态上下文中使用非静态成员并没有给出错误

本文关键字:并没有 静态成员 出错 错误 静态 上下文 为什么 | 更新日期: 2023-09-27 18:24:13

这是我有疑问的一段C#代码。

class Program
{
    class DOB { int d, m, y; }
    int a;
    enum Month { jan, feb, mar };
    static void Main(string[] args)
    {
        a = 6;                      //Showing error
        DOB d = new DOB();   //DOB is not static; still no error.
        Month m = 0;     //Month is non static but not showing error(I know it cannot be static)
        Console.WriteLine(m);
        Console.ReadKey();
    }
}

变量a的赋值显示错误,因为它是非静态成员。同时,类DOB和枚举Month也是非静态的,但它不是whing错误。

为什么在静态上下文中使用非静态成员并没有给出错误

您不能从静态类或方法访问实例成员。

aProgram的实例字段,因此在a = 6处会出现错误
DOB d = new DOB()只是创建一个DOB类的新对象,并将其分配给一个局部变量
CCD_ 6还创建了一个新的局部变量。

如果你写了

[...]
DOB d;
static void Main(string[] args)
{
    d = new DOB();

您会得到与a相同的错误。