有没有办法在派生类中实例化抽象类中的静态只读字段?有没有办法在抽象类中有一个静态只读字段在派生类中实例化?
而不是在每个派生类中有一个static readonly
字段,我宁愿如果它在他们的基类和每个派生将实例化自己的唯一字段(该字段将在每个派生类中具有不同的值)。
例如是这样的:(但它不工作)
public static void Main()
{
B b = new B(); //TypeInitializationException
var q = b.X;
}
public abstract class A
{
protected static readonly List<string> x;
}
public class B : A
{
public List<string> X
{
get { return x; }
}
static B()
{
x.Add("asdf");
x.Add("qwer");
//or do this instead but it gives an error
//x = new List<string>() { "qwer", "asdf" };
}
}
public class C : A
{
public List<string> X
{
get { return x; }
}
static C()
{
x.Add("rrrr");
x.Add("tttt");
}
}
单词'static'和'instance'本质上是相反的... – code4life
你想让B和C共享一个列表,并且都在它们的静态ctors中添加项目吗?或者你想让B和C有独立的*静态列表? – Blorgbeard
我想'B'和'C'有不同的静态列表,我不在乎'A'。 @Blorgbeard – shinzou