從以下程序的輸出是:靜態構造函數可以在非靜態構造函數之後運行。這是一個編譯器錯誤?
Non-Static
Static
Non-Static
這是一個編譯器錯誤?我的預期:
Static
Non-Static
Non-Static
因爲我認爲靜態構造函數在非靜態構造函數之前總是被調用。
我使用.net 3.5和.net 4.0對Visual Studio 2010進行了測試。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace StaticConstructorBug
{
class Program
{
static void Main(string[] args)
{
var mc = new MyClass();
Console.ReadKey();
}
}
public class MyClass
{
public MyClass()
{
Console.WriteLine("Non-static");
}
static MyClass()
{
Console.WriteLine("Static");
}
public static MyClass aVar = new MyClass();
}
}
你能解釋爲什麼你預期?因爲這不是說明書所期望的。 – 2010-05-27 23:30:53