在C#中,为什么可以为自己设置属性

时间:2013-04-18 18:17:42

标签: c# syntax properties

无意中我在工作中创建了一个错误。错误的原因是像

这样的c#代码片段
public ClassA{
        public string AProperty
        {
            get
            {
                return AProperty;
            }
            set
            {
                AProperty = value;
            }
        }
}

您可以构建它,并在没有任何异常的情况下运行它。 但它会创造一个无限循环。例如,在设置AProperty时,它总是尝试将值赋给自己。

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

1 个答案:

答案 0 :(得分:4)

因为C#编译器团队没有决定使这个确切的案例非法。可能是因为他们没有考虑实施它的好处大于成本。

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