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

Guy*_*Guy 8 c#

这篇MSDN文章声明静态类应声明为sealed和abstract.我的印象是静态类已经被封存了.为什么还需要将静态类声明为密封?

Dan*_*plo 26

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

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

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


Sol*_*ogi 17

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

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


dtb*_*dtb 12

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

这就是一个static类实际上是一个无法实例化且无法继承的类.

所以文章没有规定你应该标记您的静态类为abstractsealed另外,但这是静态类是如何在IL代表的方式.

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