2017-01-03 2 views
3

У меня есть общий абстрактный класс с резьбовыми статических полей, определенных в качестве таковых:C# нить статические поля от общего абстрактного класса

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

После того, как я извлечь из этого класса:

MyOtherClass : MyClass<string> 

Что случается поле А?

  • ли MyOtherClass имеют свои собственные нити статические поля?
  • or, существует ли набор общих полей статических полей для всех классов, полученных из MyClass?

И, если эти поля в производном классе, если я это сделать:

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

Как MyOtherClass1 и MyOtherClass3 имеют одинаковые типы, будут распределены поля?

ответ

8

Производные классы не имеют отдельной копии статических переменных. Использование общего класса с разными аргументами общего типа, но do имеет свою собственную копию переменных static. Таким образом, MyOtherClass1 и MyOtherClass3 будут использовать одни и те же переменные, поскольку они имеют одинаковые общие аргументы типа для MyClass, а MyOtherClass2 будет иметь другой набор переменных, поскольку он не имеет общих аргументов.

Смежные вопросы