次のプログラムからの出力は次のとおりです。
Non-Static
Static
Non-Static
これはコンパイラのバグですか?私は期待しました:
Static
Non-Static
Non-Static
静的コンストラクターは常に非静的コンストラクターの前に呼び出されると思ったからです。
.net3.5と.net4.0の両方を使用してVisualStudio2010でこれをテストしました。
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();
}
}