知识大全 谈谈c#中的static
Posted 状态
篇首语:最是人间留不住,朱颜辞镜花辞树。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 谈谈c#中的static相关的知识,希望对你有一定的参考价值。
最近突然觉得自己对于static的概念有点模糊了 所以就从网上搜集些资料 又自己做了一些demo 试验了一下 下边将一些写的比较好的文章分享一下 static关键字大家肯定是用的很多了 说起来大家也都知道 这有什么好谈的?
可是回想起以前的一些事情 不免叫我心中……
事情起因 一个项目中的一些类中全部都是方法 但是被设计成了非静态类了 于是我为了说服同事将这些类设计成静态的 下了好大的力度 等同事明白过来以后 我已疲惫不堪
不知道您是否存在以下观点?
static是从面向过程到面向对象的遗留产物 以往开发都是面向过程的 所以很多使用了静态类 静态方法 到了面向对象以后 这个关键字被保留下来了 因此面向对象开发中最好不用或少用static关键字
无论是静态类还是非静态类 效果都是一样的 没什么区别
如果你非要让我使用静态类 那么这样做的意义在哪里?
如果我把非静态类该为静态类 那么会不会有什么问题?
下面针对以上的一些观点 笔者阐述下自己的理解 如果哪里有写的不对的地方 还请指出
static关键字的确是面向过程开发的时代就有的关键字 但是并不代表是面向对象开发中就应该尽量避免static关键字
静态类跟非静态类效果肯定是不一样的 区别肯定是有的
根据笔者的经验 static类一般用于与状态无关的类 那么 什么是与状态无关的类?我的理解是当一个类中没有属性 只有方法的的时候 就可以认为这个类是与状态无关的类 回想非静态类实例化一个对象 目的在什么地方?目的就是通过这个实例化的对象来保存类的状态
不是吗?例如A a = new A() a Name = Kevin a Sex = 男 ……
通过我们实例化的对象a 类的状态被对象a保持住了
如果我们的类没有属性 全是方法 那么 有必要为了调用类中的方法 先实例化一个对象出来吗?
因此 笔者建议 在做类的设计的时候 如果类是与状态无关的类 建议将其设计为static类
至于说这样做的意义 首先 省略了构造一个对象的性能损耗 虽然可以忽略不计 其次 对程序员比较友好 调用类的方法更加的方便
只要一个类是与状态类无关的类 那么将其设计成静态类是没有问题的
cha138/Article/program/net/201311/12751相关参考
要理解static就必须要先理解另一个与之相对的关键字很多人可能都还不知道有这个关键字那就是auto其实我们通常声明的不用static修饰的变量都是auto的因为它是默认的就象short和long
谈谈C#的私有成员的一个有趣的现象 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 大家都知道一个
为正确理解static在应用于内部类时的含义必须记住内部类的对象默认持有创建它的那个封装类的一个对象的句柄然而假如我们说一个内部类是static的这种说法却是不成立的static内部类意味着
谈谈Linux中的存储保护 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以下讨论的内容是以i平
谈谈Java中的继承与组合 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 继承和组合的概念 在
谈谈各种JAVA中的调用程序方式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 很多书籍都说Ja
Java中static用法简谈 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 请先看下面这段程序
Java封装之static关键字 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 逐步深入的学习都
静态变量仅在局部函数域中存在但当程序执行离开此作用域时其值并不丢失看看下面的例子:复制代码代码如下:functiontest()static$a=;$a++;echo$a; test();//t
知识大全 Java中Static、this、super、final用法
Java中Static、this、super、final用法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看