谈谈c#中的static
static关键字大家肯定是用的很多了,说起来大家也都知道,这有什么好谈的?
可是回想起以前的一些事情,不免叫我心中......
事情起因,一个项目中的一些类中全部都是方法,但是被设计成了非静态类了。于是我为了说服同事将这些类设计成静态的,下了好大的力度。等同事明白过来以后,我已疲惫不堪。
不知道您是否存在以下观点?
- static是从面向过程到面向对象的遗留产物,以往开发都是面向过程的,所以很多使用了静态类、静态方法,到了面向对象以后,这个关键字被保留下来了。因此面向对象开发中最好不用或少用static关键字。
- 无论是静态类还是非静态类,效果都是一样的,没什么区别。
- 如果你非要让我使用静态类,那么这样做的意义在哪里?
- 如果我把非静态类该为静态类,那么会不会有什么问题?
下面针对以上的一些观点,笔者阐述下自己的理解,如果哪里有写的不对的地方,还请指出。
- static关键字的确是面向过程开发的时代就有的关键字,但是并不代表是面向对象开发中就应该尽量避免static关键字。
- 静态类跟非静态类效果肯定是不一样的,区别肯定是有的。
- 根据笔者的经验,static类一般用于与状态无关的类。那么,什么是与状态无关的类?我的理解是当一个类中没有属性,只有方法的的时候,就可以认为这个类是与状态无关的类。回想非静态类实例化一个对象,目的在什么地方?目的就是通过这个实例化的对象来保存类的状态。
不是吗?例如
A a = new A();
a.Name = "Kevin";
a.Sex = "男";
......
通过我们实例化的对象a,类的状态被对象a保持住了。
如果我们的类没有属性,全是方法,那么,有必要为了调用类中的方法,先实例化一个对象出来吗?
因此,笔者建议,在做类的设计的时候,如果类是与状态无关的类,建议将其设计为static类。
至于说这样做的意义:首先,省略了构造一个对象的性能损耗,虽然可以忽略不计。其次,对程序员比较友好,调用类的方法更加的方便。 - 只要一个类是与状态类无关的类,那么将其设计成静态类是没有问题的。
对于以上的一些观点,纯属个人经验之谈。如果您有不同的观点,欢迎共同交流。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库