konstruktory statyczne i BeforeFieldInit?

Jeśli typ nie ma konstruktora statycznego, inicjatory pola będą wykonywane tuż przed używanym typem - lub w dowolnym momencie wcześniej na podstawie kaprysu środowiska wykonawczego

Dlaczego ten kod:

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;
    }
}

plony:

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

podczas gdy ten kod:

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

}

plony

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

Kolejnośća ib jest zrozumiałe. ale po co sobie radzićstatic method jestróżne niżstatic field.

Mam na myśli dlaczegopoczątek ikoniec linie są w różnych miejscach za pomocą metod statycznych vs pola statyczne? To znaczy - w obu sytuacjach musi zainicjować te pola ... więc dlaczego?

(Wiem, że mogę dodać statyczny ctor, który sprawi, że będzie taki sam - ale pytam o tę konkretną sytuację).

(p.s. Dump () jest tak samo jak console.write)

questionAnswers(3)

yourAnswerToTheQuestion