静态方法 - 通常的行为吗?

Rah*_*hul 2 static-methods c#-2.0

用静态方法有一点疑问.

文档说"静态方法无法访问实例成员变量或静态方法和属性只能访问静态字段和静态事件,因为它在创建实例之前就已经执行了很多".因此,下面的代码无法编译

class staticclass
{
    int a = 20; //Private member

    public static void staticmethod()
    {
        Console.WriteLine("Value Of Instance member variable is: {0}",a);  // Error
    }

}
Run Code Online (Sandbox Code Playgroud)

但我们也知道,在静态方法中,我们可以创建同一个类的实例.

所以,稍微更改上面的代码我可以在静态方法中访问实例变量

class staticclass
{
    int a = 20; //PRivate Memeber

    public static void staticmethod()
    {
        staticclass sc = new staticclass(); 
        Console.WriteLine("Value Of Instance member variable is: {0}",sc.a);  
    }

}
Run Code Online (Sandbox Code Playgroud)

编译精确并显示结果Value Of Instance member variable is: 20.

这是正常行为吗?或者我无法正确理解它?

我的意思是,如果是这样的情况,那么这些陈述是否成立static methods can only access static fields

谢谢.

Cra*_*rer 5

你误解了静态意味着什么 - 这意味着你只能访问静态成员this.它不会限制您访问其他对象的非静态成员.

您在静态方法中访问的"其他"对象碰巧是同一个类的实例并不重要.