class Program
{
static void Main(string[] args)
{
Foo.Calc("Foo");
}
}
public abstract class Base
{
protected static Func<string, int> CalcFunction;
public static void Calc(string str)
{
Console.WriteLine(CalcFunction(str));
}
}
public class Foo : Base
{
static Foo()
{
CalcFunction = s => { return s.Length; };
}
}
當我嘗試調用Foo.Calc(「Foo」);我有例外「對象引用未設置爲對象的實例」。因爲Foo的靜態構造函數未被調用,並且CalcFunction爲null。我不想爲Foo類使用Init方法,並在調用Calc()之前調用它。調用構造函數的順序
我可以改變調用構造函數的順序嗎?
混合繼承和靜態成員似乎很奇怪。如果'Calc'和'CalcFunction'不是靜態的,那麼'Foo'將會有一個常規的實例構造函數,'CalcFunction'會在調用'Calc'之前被初始化。 – 2010-12-14 10:06:07