基类和派生类中的静态字段

时间:2011-05-01 21:20:32

标签: c# static scope

abstract基类中,如果我们有一些static字段,那么它们会发生什么?

它们的范围是从这个基类继承的类,还是从它继承的类型(每个子类都有自己static基类的abstract字段的副本??< / p>

2 个答案:

答案 0 :(得分:65)

static成员完全针对 声明 类;子类不会获得单独的副本。这里唯一的例外是泛型;如果开放泛型类型声明静态字段,则该字段特定于构成封闭泛型类型的类型参数的完全 组合 ;假设字段在Foo<int>上定义,Foo<string>将有Foo<T>个单独的静态字段。

答案 1 :(得分:10)

正如其他答案所指出的,基类静态字段将在所有子类之间共享。如果您需要为每个最终子类创建单独的副本,则可以使用具有子类名称的静态字典作为键:

foo