码迷,mamicode.com
首页 > Windows程序 > 详细

C# 关于静态与非静态的那点小事

时间:2014-11-26 01:05:36      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:blog   http   使用   sp   on   2014   问题   log   bs   

所谓静态与非静态,无非就是在声明的时候多用了一个"static".

那么静态与非静态有什么区别呢?

1、对于非静态的成员,包括方法,字段,属性。调用的时候需要用实例化的对象来调用。(new出来的。)

    而对于静态成员,调用的时候则需要使用类名去调用。

    这就引申出一个问题,可不可以用静态类来实例化对象呢?答案当然是否定的,因为,实例化对象的目的,就是要用实例化的对象来调用属性,方法或字段。对于静态的类来说,      是用类名来调用的,所以对于静态类来说,完全不需要实例化一个对象。也就无法在VS里声明一个静态类的对象了。

2、在非静态函数里,既可以使用静态的成员又可以使用非静态的成员。

     而在静态函数里,只可以使用静态的方法、字段、属性。

3、在静态类中,只允许有静态成员,不允许有实例成员出现。(所谓实例成员,指的就是非静态成员)

     在非静态类中,可以允许有静态成员出现,又可以允许有实例成员出现。    

     这又引申出一个问题,就是大多数的类都是静态类。比如我们经常用的,Console.WriteLine(),Console.ReadLine()等等。它们都是静态类,用类名调用的方法。

4、对于非静态类来说,可以实例化出成员。所以,类是不占内存空间的,而实例化的对象是占空间的。

     对于静态类来说,类是占有空间的。因为内存空间分化如下所示:

    bubuko.com,布布扣

     所以,程序里的静态类都是占空间的,存在静态存储区域。

     所以,也就导致了,静态类在整个程序项目中是共享资源的。并且,只有在程序结束后,静态类才会被释放。

 

     以上,便是对静态跟非静态类的小小总结。

     转载请注明 博客园 :http://www.cnblogs.com/gu-zhan/ 老咸

C# 关于静态与非静态的那点小事

标签:blog   http   使用   sp   on   2014   问题   log   bs   

原文地址:http://www.cnblogs.com/gu-zhan/p/4122176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!