c#4.0中,说:静态方法只可以访问静态成员变量,不可以直接访问实例变量。但这个能运行,怎么解释?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
namespace Page04
{
class D
{
public int Mem1;
static public int Mem2=5;
}
class Program
{
static void Main()//说:静态方法只可以访问静态成员变量,不可以直接访问实例变量。但这个能运行,怎么解释?
{
D d1 = new D();
d1.Mem1 = 10;
//D d2 = new D();
D.Mem2 = 28;
Console.WriteLine("d1 = {0}, d2 = {1}", d1.Mem1, D.Mem2);
Console.ReadLine();
}
}
}

D.Mem2 = 28; 中D并未实例,你访问的只是D的静态属性Mem2
静态属性的初始化时机,优先于构造函数。是以,访问静态属性,方法,是无需实例化该类的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-20

原文的上下文指的是同一类中,而不是访问在方法中实例化的对象的成员

class X{
    int z;
    static int w;
    static void Y(){
        //这里不能访问z,因为Y是静态方法
        //但是可以访问w
    }
}

本回答被网友采纳
相似回答