Следующий код:
static void Main(string[] args)
{
    Console.WriteLine("0");
    string h = Foo.X;
    Console.WriteLine("2");
}
public static class Foo
{
    public static string X = ((Func<string, string>)delegate(string g)
    {
        Console.WriteLine(g);
        return (g);
    })("_aaa");
    static Foo()
    {
        Console.WriteLine("ctor");
    }
}
Будет напечатан:
0
_aaa
ctor
2
Я знаю о поведении beforefieldinit (с/без статического конструктора и т.д.).
Я не понимаю, почему ctor (на выходе) после _aaa?
Это не имеет никакого смысла, что, если я хочу инициализировать переменные в конструкторе?
Вопрос
Почему инициализация X перед ctor?
