一尘不染

重载Getter和Setter会导致C#中

c#

当我尝试覆盖get和set函数时,我不确定是什么导致StackOverflowException。当我只使用默认的get和set时,它可以工作。

enum MyEnumType
{
....
}

public MyEnumType data { get; set; }

但是,当我尝试添加其他数据时,它将引发Exception

public MyEnumType data 
{
  get
  {
    return data;
  }
  set 
  {
    data = value;
  }
}

有任何想法吗?当我为asp
.net用户控件属性执行此操作时,没有问题。我想知道为什么它会导致普通枚举数据类型的StackOverflowException。


阅读 456

收藏
2020-05-19

共1个答案

一尘不染

是的,您没有支持域…这是您应该这样做的方式:

 private MyEnumType data;

public MyEnumType Data 
{
  get
  {
    return data;
  }
  set 
  {
    data = value;
  }
}

发生的情况是您引用该属性以返回自身,这导致尝试访问其自身值的无限循环。

如果您没有在get和set方法中添加任何其他逻辑,则也可以使用自动属性。就像这样简单定义:

public MyEnumType Data 
{
  get;
  set;
}
2020-05-19