C# - 属性导致StackOverflow

con*_*att 0 c# stack-overflow

public class ModelInfo
{
    public int AssignedCount { get; set; }
    public int UnassignedCount { get; set; }
    public int TotalCount { get { return UnassignedCount + TotalCount; } }
}
Run Code Online (Sandbox Code Playgroud)

*编辑:* 我意识到当我把这个代码放在SO中时,TotalCount属性正在添加UnassignedCount + TotalCount(我的意思是将其他两个计数加在一起).有人可以提供一个足够的解释为什么SO错误发生?我的意思是,低级别的东西.

Stackoverflowing!

Mat*_*hew 13

你是TotalCount从内部打电话TotalCount,不要那样做.

您可以使用另一个字段来代替该属性的值.

虽然,我怀疑你的代码应该是:

public int TotalCount { get { return UnassignedCount + AssignedCount ; } }
Run Code Online (Sandbox Code Playgroud)

编辑:至于为什么发生堆栈溢出,这是因为当您使用属性时,.NET编译器实际上将生成2个函数,set_PropertyName并且get_PropertyName.所以在essense中,它会导致get_PropertyName方法调用的堆栈溢出变得无限深.