根据Jon Skeet的artice C#和beforefieldinit以及When中的讨论,是一个在C#中调用的静态构造函数?必须在首次调用类的方法之前调用静态构造函数.
由于某些原因,以下代码不会出现此行为:
namespace AbstractAndStatic
{
class Program
{
static void Main(string[] args)
{
StaticClass.Equals(1,2);
StaticClass.foo();
}
}
static class StaticClass : Object
{
public static void foo()
{
Console.WriteLine("Static");
}
static StaticClass()
{
Console.WriteLine("static constructor");
}
}
class TestClass
{
public void deb()
{
Console.WriteLine("Test Class Debug");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Visual Studio调试器调试上面的代码.当StaticClass.Equals(1,2);在Main方法中执行语句时,不会StaticClass.foo();调用静态构造函数,但是在执行时它会调用静态构造函数,然后调用foo方法.
我很困惑,为什么它没有在执行时第一次调用StaticClass.Equals(1,2);.