When initialized by a static method?

Here the initialization order(if not right then please correct me):
class Helper
{
 public static int Report(string str)
{
Console.WriteLine(str);
 return 0;
}
}

class MyClass
{
 static int staticField = Helper.Report("2. Initialize static fields");

 static MyClass()
{
 Helper.Report("3. Static constructor");
}

 int field = Helper.Report("4. Initializing non-static fields");

 public MyClass(int c)
{
 Helper.Report("5. Constructor called another constructor");
}

 public MyClass()
 : this(1)
{
 Helper.Report("6. Clearly constructor called");
}

 public void Method()
{
 Helper.Report("7. Method");
}
}

class Program
{
 public static void MainX()
{
 Helper.Report("1. The beginning of the program");
 new MyClass().Method();
}
}


And so the question arose...
And is initialized when a static method and not a static constructor?
March 25th 20 at 13:30
1 answer
March 25th 20 at 13:32
Solution
The method does not require initialization. Initialization require fields/variables.
Inside a static method, they are initialized at the time of first invocation of this method.
A static constructor is called automatically when you create the first external references to variables/class fields.
Static fields are initialized BEFORE the constructor call.

In General, you have a difficult case - it is necessary to look, as the compiler has optimized.

If a static constructor (ยง10.12) exists in the class, execution of the static field initializers occurs immediately prior to executing that static constructor. Otherwise, the static field initializers are executed at an implementation-dependent time prior to the first use of a static field of that class.

Find more questions by tags C#