c# 为什么要合理使用静态类

2024-12-28 02:58:06
推荐回答(3个)
回答1:

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

回答2:

1.不是合理使用静态类,而是合理使用静态属性。用静态类我们并不反对,对于类似api的存在,纯粹静态方法合集的静态类有其方便的地方

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

3静态类本身具有上下文环境无关的特性,所以他具有“穿越”性,你在任何时间,任何地点都可以调用,这个特性正是api提供所需要的。而一些和上下文环境联系比较紧密的东西,不建议使用静态类

回答3:

类的静态成员是属于类的,类是什么?类是生成对象的模版;静态成员属于类而不是属于某一个对象,进一步说静态成员是共享的(所以在VB叫Share),任何这个类的对象都可以对这个静态成员访问。现在假设静态成员可以访问对象中的变量,由于静态成员是在生成任何具体的对象前已经存在的,那么这个静态成员就根本访问不到任何对象的成员,因为这个时候对象根本就不存在