c# 为啥要合理使用静态类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 为啥要合理使用静态类相关的知识,希望对你有一定的参考价值。

什么是静态类
所谓静态类指的是无需实例化成对象,直接通过静态体例挪用的类。
本质上讲,静态类是面向过程的,因为通常它只是机械的把原本面向过程的代码集合到一起,虽然结果是以类的体质存在,但此时的类更像是一件皇帝的新衣,所以可以说静态类实际上是披着面向对象的皮儿,干着面向过程的事儿。
面向对象的设计原则之一:针对接口编程,而不是针对实现编程。这有什么不同?打个比喻来说:抛开价格因素,你喜欢独立显卡的电脑还是集成显卡的电脑?我想绝大大都人会选择独立显卡。独立显卡可以看做是针对接口编程,而集成显卡就就能够看做是针对实现编程。如此说来针对实现编程的短处就呼之欲出了: 它丧失了转变的可能性,灵活性。
注意的是:某些情况下,利用静态延迟绑定也能够提高静态类的可测试性。
所以,静态类有好的一面,好比说很适合实现一些无状态的工具类,但大部分时候,我的主观意识很明确,多用对象,少用静态类,避免系统过早的固化。不过有些人说,静态类比对象快之类,我没有对比过,所以.....
参考技术A 1.不是合理使用静态类,而是合理使用静态属性。用静态类我们并不反对,对于类似api的存在,纯粹静态方法合集的静态类有其方便的地方

2.对与非api方式存在的东西,不建议使用静态类。尤其是和线程,线程池一类玩意挂钩的东西,静态属性大多都非线程安全

3静态类本身具有上下文环境无关的特性,所以他具有“穿越”性,你在任何时间,任何地点都可以调用,这个特性正是api提供所需要的。而一些和上下文环境联系比较紧密的东西,不建议使用静态类
参考技术B 类的静态成员是属于类的,类是什么?类是生成对象的模版;静态成员属于类而不是属于某一个对象,进一步说静态成员是共享的(所以在VB叫Share),任何这个类的对象都可以对这个静态成员访问。现在假设静态成员可以访问对象中的变量,由于静态成员是在生成任何具体的对象前已经存在的,那么这个静态成员就根本访问不到任何对象的成员,因为这个时候对象根本就不存在

请教一下C#中父类静态构造函数在子类中为啥不会和子类的静态构造函数一起执行

请教一下C#中父类静态构造函数在子类中为什么不会和子类的静态构造函数一起执行。

如果子类有自己的构造函数,那么父类的构造函数就不会运行了。当子类没有构造函数时才会调用父类的构造函数来构造对象。 参考技术A 你应该去看一下继承这一块的东西 参考技术B 推荐你看一段视屏教程http://www.enet.com.cn/eschool/video/c/

以上是关于c# 为啥要合理使用静态类的主要内容,如果未能解决你的问题,请参考以下文章

c#里为啥有的使用时函数需要new一个对象而有的不用?为啥不直接调用就好?

请教一下C#中父类静态构造函数在子类中为啥不会和子类的静态构造函数一起执行

python 为啥要使用静态方法

为啥不能在 Java 中将类声明为静态?

为啥我不能在 C# 中使用抽象静态方法?

在java中,为啥类实例也能访问静态域?