6

不小心在我的工作中创建了一个错误。该错误的原因是一段 c# 代码,例如

public ClassA{
        public string AProperty
        {
            get
            {
                return AProperty;
            }
            set
            {
                AProperty = value;
            }
        }
}

您可以构建它,并毫无例外地运行它。但它会创建一个无限循环。例如,在设置 AProperty 时,它总是尝试将值分配给它自己。

任何人都知道为什么在 C# 中编译器会允许这种语法?

4

1 回答 1

4

因为 C# 编译器团队并没有决定将这种确切的情况设为非法。可能是因为他们不认为实施它的好处大于成本。

即使是最微不足道的测试,它也会产生。这不是一个非常微妙的错误,如果他们被它咬了几次,开发人员就会学会寻找它。

于 2013-04-18T18:19:36.880 回答