class MyClass { public static int staticNumber = 0x12345678;//定义静态变量 public int number = 0; public void setStaticValue(int num) { staticNumber = num; } } class Program { static void Main(string[] args) { //通过类名直接调用 MyClass.staticNumber = 0x77777777; MyClass class1 = new MyClass(); MyClass class2 = new MyClass(); class1.number = 0x11111111; class1.setStaticValue(0x11111111);//对象1调用 class2.number = 0x22222222; class2.setStaticValue(0x22222222);//对象2调用 } }
通过以上观察分析这下我们就明白静态成员变量和非静态成员变量的区别了吧!总结:静态成员变量在进入main之前就已经在内存中分配并赋值了!静态成员变量存放在单独的一块存储区域。而非静态成员变量只有在生成对象是才会在堆中为其分配存储空间!每个对象的同名非静态变量都有自己的空间。而静态成员变量是被各对象共享使用的。 不用创建对象就已经存放,当然可以用类名直接调用喽! 你也可以这么想,静态成员变量就像是公共厕所,大家都可以访问,而非静态的就像是你家的厕所,别人是不能随便访问的!别人想要访问得经过你的同意授权才可以! |