考虑以下代码:为什么不调用主类中的默认构造函数?
class Program
{
static void Main(string[] args)
{
}
public Program()
{
DoSomthing();
}
}
的构造并不call.?Why? 为什么构造函数应该调用? 谁从课堂上创建实例?
考虑以下代码:为什么不调用主类中的默认构造函数?
class Program
{
static void Main(string[] args)
{
}
public Program()
{
DoSomthing();
}
}
的构造并不call.?Why? 为什么构造函数应该调用? 谁从课堂上创建实例?
因为您没有创建实例。只有在创建每个实例时才调用构造函数。 Main()
是一个static
方法 - 不需要实例即可调用该方法。
你可以使用一个静态构造函数(又名类型初始化):
static Program()
{
DoSomething();
}
静态构造函数是分离出在成员初始化中无法完成的init的好方法。例如,将命令行params解码为标志。 – Gusdor
@古斯多我不同意;解码命令行参数可以通过'Main'完成。调用静态构造函数的确切时机非常复杂,并且具有足够的边界情况,当您不期望它们时会导致问题 –
_只有在创建每个instance_时才调用构造函数_:static concstructoes也会在调用时调用静态字段被访问或被访问(beforefieldinit)...没有任何实例。 –
很好的面试问题。 –
我很抱歉,但我不认为这是个好问题。他问_why构造函数没有调用_但他甚至没有说_why构造函数应该调用_?他可以通过查看几个MSDN页面在30秒内找到答案。我真的很惊讶这个问题现在得到7 upvotes .. –
@SonerGönül你可以关闭这个问题。 –