为什么构造函数在设置断点时运行三次?

-1 c# constructor class

尝试编译此代码.为什么ctor工作3次?在输出之前添加断点并调试它.

private static void Main(string[] args)
{
    Console.WriteLine(new A().a);
}

class A
{
    public int a;
    public A()
    {
        Console.WriteLine(GetHashCode());
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

Pep*_*ige 5

这是Visual Studio中调试设置的副作用.转到工具 - >选项,然后选择调试 - >常规.取消选中"启用属性评估和其他隐式函数调用".那么有和没有断点的行为将是一致的.

或者,您只需将main方法中的行更改为:

Console.WriteLine((new A()).a);
Run Code Online (Sandbox Code Playgroud)