construtores estáticos e BeforeFieldInit?

Se um tipo não tiver nenhum construtor estático, os inicializadores de campo serão executados imediatamente antes do tipo que está sendo usado - ou a qualquer momento antes, no capricho do tempo de execução.

Por que esse código:

void Main()
{ 
  "-------start-------".Dump();
   Test.EchoAndReturn("Hello");
  "-------end-------".Dump();

}

 class Test
{
    public static string x = EchoAndReturn ("a");
    public static string y = EchoAndReturn ("b");
    public static string EchoAndReturn (string s)
    {
        Console.WriteLine (s);
        return s;
    }
}

rendimentos :

-------start-------
a
b
Hello
-------end-------

enquanto esse código:

void Main()
{ 
  "-------start-------".Dump();
   var test=Test.x;
  "-------end-------".Dump();

}

rendimentos

a
b
-------start-------
-------end-------

A ordem dea eb é entendido. mas por que lidar comstatic method édiferente do questatic field.

Quero dizer porque ocomeçar efim linhas estão em locais diferentes com métodos estáticos versus campos estáticos? Quero dizer - em ambas as situações ele tem que inicializar esses campos ... então por quê?

(Eu sei que posso adicionar o driver estático que faz com que seja o mesmo - mas estou perguntando sobre essa situação em particular.)

(p.s. Dump () é como console.write)

questionAnswers(3)

yourAnswerToTheQuestion