静态类的继承

Nis*_*mar -2 c# oop static abstract-class

我不知道这个问题是否有意义,或者是否是一个幼稚的问题,但我一直无法找到满意的答案。

我希望能够在多个静态类之间共享代码。静态类是否有一个“等效”的抽象基类(即我可以让一个静态类从另一个静态类继承)吗?如果没有,为什么不呢?是否有另一种方法可以以类似于使用抽象基类的方式在多个静态类之间共享代码?

另外,静态类与“密封”类相比如何?

Dmi*_*nko 5

你说得很对。反射将表明一个static类同时是abstractsealed

  public static class MyStaticTest {
  }

  ...

  // I'm abstract
  Console.WriteLine(typeof(MyStaticTest).IsAbstract ? "I'm abstract" : "");
Run Code Online (Sandbox Code Playgroud)

这就是为什么您无法创建实例(编译时错误)new MyStaticTest();:。然而,反思将表明任何static类也是sealed如此:

 // I'm sealed 
 Console.WriteLine(typeof(MyStaticTest).IsSealed ? "I'm sealed" : "");
Run Code Online (Sandbox Code Playgroud)

所以你不能继承它(编译时错误):public class MyClass: MyStaticTest {..}。因此,您对类所能做的static就是声明static成员(静态字段、属性、方法等)。