来自通用抽象类

时间:2017-01-03 14:55:48

标签: c# generics

我有一个带有线程静态字段的通用抽象类,定义如下:

abstract MyClass<T>
{
    [ThreadStatic]
    private static bool A;
}

一旦我从这个班级派生出来:

MyOtherClass : MyClass<string>

字段A会发生什么?

  • MyOtherClass 是否有自己的线程静态字段?
  • 或者,是否有一组共享线程静态字段用于从 MyClass 派生的所有类?

并且,如果字段是每个派生类,如果我这样做:

MyOtherClass1 : MyClass<string>
MyOtherClass2 : MyClass<bool>
MyOtherClass3 : MyClass<string>

由于 MyOtherClass1 MyOtherClass3 具有相同的类型,是否会共享字段?

1 个答案:

答案 0 :(得分:8)

派生类没有静态变量的单独副本。具有不同泛型类型参数的泛型类的用法,但是 do 每个都有自己的static变量副本。因此,MyOtherClass1MyOtherClass3将共享相同的变量,因为它们具有MyClass的相同泛型类型参数,而MyOtherClass2将具有不同的变量集,因为它不会&# 39; t共享相同的通用参数。