在子類中沒有任何代碼,我希望抽象類爲每個子類都有一個不同的靜態變量副本。在C#製作一個超類有一個靜態變量,每個子類都有不同的c#
abstract class ClassA
{
static string theValue;
// just to demonstrate
public string GetValue()
{
return theValue;
}
...
}
class ClassB : ClassA { }
class ClassC : ClassA { }
和(例如):
(new ClassB()).GetValue(); // returns "Banana"
(new ClassC()).GetValue(); // returns "Coconut"
我目前的解決辦法是這樣的:
abstract class ClassA
{
static Dictionary<Type, string> theValue;
public string GetValue()
{
return theValue[this.GetType()];
}
...
}
雖然這工作得很好,我不知道是否有一個更優雅或內置的方式做到這一點?
這類似於Can I have different copies of a static variable for each different type of inheriting class,但我有過亞
你也許可以通過破解一個'Dictionary'來調用'GetType()',但這太可怕了...... –
2009-12-03 21:46:58
對於那個虛擬/抽象的靜態成員來說會很好。請參見(搜索「虛擬靜態成員」) –
VolkerK
2009-12-03 21:59:59
爲什麼不只是讓它不是靜態的? – BlackTigerX 2009-12-03 22:01:00