L'output del seguente programma è:Il costruttore statico può essere eseguito dopo il costruttore non statico. È un bug del compilatore?
Non-Static
Static
Non-Static
Si tratta di un bug del compilatore? Mi aspettavo:
Static
Non-Static
Non-Static
perché ho pensato che il costruttore statico è sempre stato chiamato prima il costruttore non statico.
L'ho provato con Visual Studio 2010 utilizzando sia .net 3.5 che .net 4.0.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace StaticConstructorBug
{
class Program
{
static void Main(string[] args)
{
var mc = new MyClass();
Console.ReadKey();
}
}
public class MyClass
{
public MyClass()
{
Console.WriteLine("Non-static");
}
static MyClass()
{
Console.WriteLine("Static");
}
public static MyClass aVar = new MyClass();
}
}
Può spiegare perché vi aspettavate che? Perché non è quello che le specifiche dicono di aspettarsi. –