C#getter/setter对

Tee*_*nge 3 c# getter-setter

我正在尝试使用以下getter和setter创建属性.我试过了:

    int i { 
        get{
            return i;   
        }
        set {
            if (value > 60) {
            } else { 
                i = value; 
            } 
        }

    }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这个时,我尝试运行代码时出现堆栈溢出错误.我的代码有什么问题吗?任何Assistane将不胜感激.

Bro*_*ass 5

如果你的属性中有任何类型的逻辑,你需要一个支持字段(否则自动属性是要走的路) - 目前你正在分配给属性本身再次调用你的setter代码(同样对于getter) - 这会导致Stackoverflow异常.

例:

private int _i;
public int SomeProperty
{
  get{ return _i;}
  set 
  {
     //your logic here
     _i = value; 
  }
}
Run Code Online (Sandbox Code Playgroud)