标签: c# class constructor
尝试编译此代码。为什么ctor工作3次? 在输出之前添加断点并对其进行调试。
private static void Main(string[] args) { Console.WriteLine(new A().a); } class A { public int a; public A() { Console.WriteLine(GetHashCode()); } }
输出:
答案 0 :(得分:5)
这是Visual Studio中调试设置的副作用。转到工具->选项,然后调试->常规。取消选中“启用属性评估和其他隐式函数调用”。这样,无论有无断点,您的行为都是一致的。
或者,您可以将main方法中的行更改为此:
Console.WriteLine((new A()).a);
答案 1 :(得分:-2)
构造函数对我来说只工作一次,没有断点。
但是,在添加了如图所示的断点之后,确实确实有对A()的三个调用。
A()