gpt4 book ai didi

c# - 为什么我的 get/set 实现会出现堆栈错误?

转载 作者:行者123 更新时间:2023-11-30 13:27:21 24 4
gpt4 key购买 nike

我在 C# 中尝试以下操作:

public class Reference : AuditableTable
{
[Range(0, 99, ErrorMessage = "{0} must be between {1} and {2}")]
[DisplayName("Order")]
public int Order {
get { return Order; }
set {
if ((value < 0) || (value > 99)) {
throw new Exception(string.Format("{0} must be between 0 and 99", value.ToString()));
} else {
Order = value;
}
}
}

谁能帮忙解释一下为什么读取时会出现堆栈溢出错误?

最佳答案

您的属性正在引用自身,从而导致无限循环。
一个明显的解决方法是使用私有(private)字段并通过您的属性公开它:

private int order;
public int Order
{
get
{
return order; //private field
}
set
{
if ((value < 0) || (value > 99)) {
throw new Exception(string.Format("{0} must be between 0 and 99",
value.ToString()));
} else {
order = value; // again accessing the private field (setting this time)
}
}
}

关于c# - 为什么我的 get/set 实现会出现堆栈错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12120549/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com