【发布时间】:2014-06-26 04:07:59
【问题描述】:
我阅读了 Jeffrey Richter - CLR via C# 并决定制作一些测试应用程序。我需要一些帮助来了解究竟发生了什么以及为什么。是的,我知道,公共财产是个坏主意,但我的问题不是关于代码风格。 所以:
class ClassA
{
public static int val1;
static ClassA
{
val1 = 10;
}
}
class ClassB : ClassA
{
public static int val2;
static ClassB
{
val1 = 15;
}
}
现在我们按以下顺序调用输出到控制台:
Console.WriteLine(ClassB.val1);
Console.WriteLine(ClassB.val2);
Console.WriteLine(ClassB.val1);
输出是:
10
0
15
所以,据我了解,当第一次使用该类型的静态成员时,编译器将调用 static ctor。就在使用之前。
那么为什么它不在第一行调用static ctor 的ClassB 呢?这都是因为静态成员没有继承,所以它只是在第一行调用基类型?请解释一下。谢谢。
【问题讨论】:
标签: c# .net inheritance constructor static