C#泛型抽象类中的线程静态字段

3
我有一个泛型抽象类,其中包含线程静态字段的定义如下:
abstract MyClass<T>
{
    [ThreadStatic]
    private static bool A;
}

当我从这个类派生时:

MyOtherClass : MyClass<string>

字段A会发生什么情况?

  • MyOtherClass是否有自己的线程静态字段?
  • 还是所有从MyClass派生的类都共享相同的线程静态字段集合?

如果这些字段是针对派生类的,如果我这样做:

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

由于MyOtherClass1MyOtherClass3具有相同的类型,那么这些字段会被共享吗?

1个回答

8

派生类没有单独的静态变量副本。然而,使用不同泛型类型参数的通用类确实每个都有自己的static变量副本。因此,MyOtherClass1MyOtherClass3将共享相同的变量,因为它们具有相同的MyClass泛型类型参数,而MyOtherClass2将具有不同的变量集,因为它不共享相同的泛型参数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接