为什么在C#中将静态类声明为密封和抽象?

时间:2009-08-12 22:02:21

标签: c#

This MSDN article声明静态类应声明为sealed和abstract。我的印象是静态类已经被封存了。为什么还需要将静态类声明为密封?

4 个答案:

答案 0 :(得分:26)

我认为该文章的相关内容是:

“将静态类声明为密封和抽象,并添加私有实例构造函数,如果您的编程语言没有内置的静态类支持。

请记住,.NET框架支持许多不同的语言。

答案 1 :(得分:17)

C#v1在课堂上不允许使用'static'关键字。因此,如果您有一个只有静态方法的类,则建议将其声明为'sealed','abstract'并将构造函数设为私有。这意味着没有人可以实例化您的类或尝试继承它。 [从只有静态方法的类继承是没有意义的。]

C#v2允许类上的static关键字,因此您不必使用上述技巧来强制正确使用。

答案 2 :(得分:12)

  • 将类标记为abstract的一个影响是它无法实例化。
  • 将类标记为sealed的效果之一是无法继承。

这就是static类实际上是什么 - 一个无法实例化且无法继承的类。

因此,本文未说明您应将静态类标记为abstractsealed,但这是静态类在IL中的表示方式。

(如果他们没有static关键字,其他语言可能允许你这样做,虽然我对此表示怀疑,因为abstract sealed类在语义上没有多大意义。)< / p>

答案 3 :(得分:0)

似乎是说如果语言不支持静态类,则使用私有构造函数将类声明为密封和抽象是静态类的替代。