Следующий код:
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
?