static 类深入了解
2016-07-26 11:40
656 查看
http://www.cnblogs.com/wlb/archive/2009/12/18/1627426.html
Static 是静态的, 故名思义, 就是一个类所固有的,而不是其它类所固有的。 更不是对象的拥有的。 所以:Static 方法不用实例化,不能被继承,不能设置为 virtual ,abstract , 更不可能被 override ,也可以说, static 不是那么灵活。 而 非 static 就很灵活。 对象化特征明显, 你可以用 parent.method 调用,也可以用 child.method 调用。 而对于调用者来说, 是调用了适当的方法,其实不是相同的方法 。这很好理解。 static 还可能会引起多线程的并发问题,用 lock 解决。 当然,基于类固有的特点, 也有static 存在的道理。如:我只用 dbhelper.ExecuteQuery 来执行查询, 而它不能被覆写,不能用子类来访问 。
静态分配的,有两种情况:1. 用在类里的属性、方法前面,这样的静态属性与方法不需要创建实例就能访问,通过类名或对象名都能访问它,静态属性、方法只有“一份”:即如果一个类新建有N个对象,这N 个对象只有同一个静态属性与方法;2. 方法内部的静态变量:方法内部的静态变量,执行完静态变量值不消失,再次执行此对象的方法时,值仍存在,它不是在栈中分配的,是在静态区分析的, 这是与局部变量最大的区别;
————————————————————————
这是我的C++笔记,看能不能用。static用法:1、修饰函数的局部变量:特点:有默认值0,只执行一次,运行一开始就开辟了内存,内存放在全局2、修饰全局函数和全局变量:特点:只能在本源文件使用3、修饰类里面的成员变量:特点:和1差不多,定义多个static y,但只有一个y,不进入类的大小计算,不依赖于类对象的存在而存在(可直接调用,要进行外置声明)4、修饰类的成员函数:特点:f():括号里无this指针,只能调用他的本类静态函数和他的静态变量,即是用static修饰过的不依赖于类对象的存在而存在(可不进行外置声明,直接调用
我是个菜鸟, 按我个人理解c#中static关键字应用分为两部分--静态类,静态成员.静态类:静态类不能实例化(不允许有实例构造器),只能包含静态成员,密封的.静态类没有确定的实例化时间,MSDN上讲可以保证在程序中首次引用该类前构造它(调用静态构造器).CLR还提供了适当关键字来改变静态类构造时机.静态类一但构造将惯穿"全局"(程序的整个生存期).静态成员:静态成员归所属类型所有,而不是实例,但任一实例都可共享它.因为它归类型所有,由此它不能访问实例成员.并且访问它只能通过类型名而非实例变量名.和静态类类似的是它也一但构造(指字段成员)将惯穿"全局"(程序的整个生存期).使用:我没有"static惊恐症",相反有些时候我倒觉得基于static的特点它会提高性能.呵, 这么说也很片面(BS一下自己).其实我觉得还是要看具体应用了.就像某某牛人说的"枪在罪犯手里用来犯罪,但在士兵手里确是保卫国家"--好像是这么说的.. 恩恩,记不清了..以上仅个人观点,错误之处还望指正..
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#比较二个数组并找出相同或不同元素的方法