静态和密封的类差异

Sau*_*jan 142 .net c# oop static sealed

  1. 是否有任何类在静态类中实现?手段:

    static class ABC : Anyclass
    
    Run Code Online (Sandbox Code Playgroud)
  2. 是否有任何类可以在密封类和静态类中继承?
    手段:

    static class ABC : AClass {}
    
    Run Code Online (Sandbox Code Playgroud)

    sealed class ABC : AClass {}
    
    Run Code Online (Sandbox Code Playgroud)

我在某种程度上可能是错的吗?

Hos*_*Rad 642

这可能对您有所帮助:

+--------------+---+-------------------------+------------------+---------------------+
|  Class Type  |   | Can inherit from others | Can be inherited | Can be instantiated | 
|--------------|---|-------------------------+------------------+---------------------+
| normal       | : |          YES            |        YES       |         YES         |
| abstract     | : |          YES            |        YES       |         NO          |
| sealed       | : |          YES            |        NO        |         YES         |
| static       | : |          NO             |        NO        |         NO          |
+--------------+---+-------------------------+------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

  • 为什么这不被接受为答案? (66认同)
  • 惊人的。感谢您的及时回复@HosseinNarimaniRad。我早上就给你投了赞成票,因为信息无论如何都是正确的,但这只是格式问题。顺便说一句,您的答案从发布之日起就应该成为被接受的答案,但看来我们将不得不等待更多:) (2认同)
  • `static class Foo : object { }` 是有效的,但本质上是 `static class Foo { }`。 (2认同)

PaR*_*RaJ 37

简单来说

静态类

可以将类声明为static,表示它只包含静态成员.使用new关键字无法创建静态类的实例.当加载包含类的程序或命名空间时,.NET Framework公共语言运行库(CLR)会自动加载静态类.

密封类

密封类不能用作基类.密封类主要用于防止派生.因为它们永远不能用作基类,所以一些运行时优化可以使调用密封类成员的速度稍微快一些.


C.E*_*uis 18

你可以让一个sealed从另一个类继承的类,但你不能继承一个sealed类:

sealed class MySealedClass : BaseClass // is ok
class MyOtherClass : MySealedClass     // won't compile
Run Code Online (Sandbox Code Playgroud)

static类不能从其他类继承.


Abd*_*dul 5

您可以简单地将它们区分为:

       Sealed Class       |        Static Class
--------------------------|-------------------------
it can inherit From other | it cannot inherit From other
classes but cannot be     | classes as well as cannot be
inherited                 | inherited
Run Code Online (Sandbox Code Playgroud)