c# – 为什么我的get / set实现会产生堆栈错误?
发布时间:2020-12-16 00:05:02 所属栏目:百科 来源:网络整理
导读:我在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
我在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 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) } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |