我理解什么是静态类和密封类,我经常使用扩展方法,我只是想知道--有人知道为什么C#中的静态类是密封的吗?
我看过MSDN和C#语言规范,但它从未真正说明为什么它们是密封的。
为什么我们不能继承静态类并覆盖静态成员等等?
编辑:
我很感激你的回答,但你仍然在谈论静态类是什么。我知道为什么我不能推翻它的方法。但我在问他们为什么要这样做?
真的那么贵吗?为什么要设计一个langauge,所以静态类实际上是静态的?只是为了传统吗?还有什么我没看到的好处吗?
(我有一种潜移默化的怀疑,我从根本上误解了静态类的意义。)
发布于 2014-10-31 02:08:21
不能继承静态类,因为不能覆盖静态成员。您不能覆盖静态成员,因为重写成员的整个概念依赖于隐式参数的类型的虚拟分派,而静态成员没有可用于调度的隐式参数。
发布于 2014-10-31 02:10:07
密封类意味着不能将其用作超类。创建类static使它们作为基类毫无用处,因为它们不能具有可重写的方法。因此,从静态类派生具有可疑的价值:人们可能会认为您可以从静态基共享受保护的方法,但它是“单向街道”,因为派生类不能通过提供有用的重写来改变其基的功能。
这将静态类的实用程序归结为类似命名空间的方法及其相关静态数据的持有者。让此类类继承其他静态类将使这一目的变得不那么明确,而在功能或便利性方面却很少增加。
https://stackoverflow.com/questions/26666436
复制相似问题