我知道,静态构造函数总是优先,并在任何实例构造函数之前被调用。然而,考虑一下我有一个实例类和一个静态类的场景。我想知道为什么结果是首先从基类和静态类?我也验证了交换呼叫,我相应地得到了结果。但是我错在我的想法中:静态类总是应该首先被调用,而不管其他实例类是什么?为什么这引发我是因为,我看到某个地方,当包含该类的命名空间被触发时,静态类会自动加载。然后,我期望静态构造函数首先触发。为什么不发生?有人能以一种可以理解和简单的方式解释吗?静态类不会先被调用,而会被实例类调用。为什么?
public class Base
{
public Base() { Console.WriteLine(" I am from normal Base constructor"); }
static Base() { Console.WriteLine("Hey I am from Static Base"); }
}
public static class Base1
{
static Base1() { Console.WriteLine("I am from Static Constructor"); }
public static void StaticMethod() { Console.WriteLine("I am from Static Method"); }
}
static void Main(string[] args)
{
Base b = new Base();
Base1.StaticMethod();
Console.Read();
}
你在哪里阅读当包含该类的命名空间被触发时,静态类会自动加载? – Paparazzi 2013-02-13 13:16:23
“我在某处看到,当包含该类的命名空间被触发时,静态类会自动加载。”你如何“触发”命名空间?这根本不符合逻辑。请发布一个链接到神秘的“某处”,但不清楚它们的含义。 – dasblinkenlight 2013-02-13 13:17:46
嗨Blam和dasb,对不起,如果我误解了,但你可以在MSDN中看到类似的声明http://msdn.microsoft.com/en-us/library/79b3xss3(v=vs.80).aspx – Learner 2013-02-13 13:19:23