标签:blog http 使用 sp on 2014 问题 log bs
所谓静态与非静态,无非就是在声明的时候多用了一个"static".
那么静态与非静态有什么区别呢?
1、对于非静态的成员,包括方法,字段,属性。调用的时候需要用实例化的对象来调用。(new出来的。)
而对于静态成员,调用的时候则需要使用类名去调用。
这就引申出一个问题,可不可以用静态类来实例化对象呢?答案当然是否定的,因为,实例化对象的目的,就是要用实例化的对象来调用属性,方法或字段。对于静态的类来说, 是用类名来调用的,所以对于静态类来说,完全不需要实例化一个对象。也就无法在VS里声明一个静态类的对象了。
2、在非静态函数里,既可以使用静态的成员又可以使用非静态的成员。
而在静态函数里,只可以使用静态的方法、字段、属性。
3、在静态类中,只允许有静态成员,不允许有实例成员出现。(所谓实例成员,指的就是非静态成员)
在非静态类中,可以允许有静态成员出现,又可以允许有实例成员出现。
这又引申出一个问题,就是大多数的类都是静态类。比如我们经常用的,Console.WriteLine(),Console.ReadLine()等等。它们都是静态类,用类名调用的方法。
4、对于非静态类来说,可以实例化出成员。所以,类是不占内存空间的,而实例化的对象是占空间的。
对于静态类来说,类是占有空间的。因为内存空间分化如下所示:
所以,程序里的静态类都是占空间的,存在静态存储区域。
所以,也就导致了,静态类在整个程序项目中是共享资源的。并且,只有在程序结束后,静态类才会被释放。
以上,便是对静态跟非静态类的小小总结。
转载请注明 博客园 :http://www.cnblogs.com/gu-zhan/ 老咸
标签:blog http 使用 sp on 2014 问题 log bs
原文地址:http://www.cnblogs.com/gu-zhan/p/4122176.html