C#线程来自通用抽象类的静态字段

Tho*_*mas 3 c# generics

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

abstract MyClass<T>
{
    [ThreadStatic]
    private static bool A;
}
Run Code Online (Sandbox Code Playgroud)

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

MyOtherClass : MyClass<string>
Run Code Online (Sandbox Code Playgroud)

A场怎么了?

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

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

MyOtherClass1 : MyClass<string>
MyOtherClass2 : MyClass<bool>
MyOtherClass3 : MyClass<string>
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*rvy 8

派生类没有静态变量的单独副本.然而,随着不同的泛型类型参数的泛型类的用法每个人都有自己的副本static变量.所以MyOtherClass1并且MyOtherClass3将共享相同的变量,因为它们具有相同的泛型类型参数MyClass,并且MyOtherClass2将具有不同的变量集,因为它不共享相同的泛型参数.