关于C#:继承静态类

 2020-02-15 

inherit a static class

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How can a static class derive from an object?

我有一个静态类,我想从另一个静态类继承,但是编译器禁止这样做。"静态类必须从对象派生"

我想知道为什么,是否有任何解决方法?


静态意味着共享,并且不可继承。 您无法做到这一点。


不能从静态类继承,它们是密封的,并且静态方法不能是虚拟的。

我认为您需要重新考虑设计,可以考虑使用单例模式而不是静态类,这样您就可以毫无问题地进行继承。

或仅使用静态成员将两个类连接在一起:

静态A级
{
静态B b;
}


您将无法通过继承来完成此操作。 尝试使用复合图案。

在其中,您具有实现和接口的多个对象,这些对象将由将其作为成员的静态类"组成"。 好处是您可以随后将行为添加到实现您的接口的每个新类中,并且这些行为在运行时可以互换。

编辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    public class Foo
    {
        protected static class StaticClass
        {
            public static int Count { get; set; }
        }

        public virtual string GetBars()
        {
            return"I am Foo:" + StaticClass.Count++;
        }
    }

    public class FooToo:Foo
    {
        public override string GetBars()
        {
            return"I am Foo Too:" + StaticClass.Count++;
        }
    }

然后...

1
2
3
4
5
Foo foo = new Foo();
Foo fooToo = new FooToo();

Console.WriteLine(foo.GetBars());
Console.WriteLine(fooToo.GetBars());