c#属性集 - 为什么使用私有变量

con*_*att -2 c# properties

我总是看到使用私有变量的属性来保存这样的值.

private int _myValue;
public int MyValue { get { return _myValue; } set { _myValue = value; } }
Run Code Online (Sandbox Code Playgroud)

为什么我不能跳过私有变量并执行此操作...

public int MyValue { get { return MyValue; } set { MyValue = value; } }
Run Code Online (Sandbox Code Playgroud)

*注意:我不想使用自动属性,因为我希望能够做这样的事情.

public int MyValue { get { return MyValue.Tolower().Trim(); } set { MyValue = value; } }
Run Code Online (Sandbox Code Playgroud)

Ian*_*son 15

因为无限循环最终会导致抛出StackOverflowException.


Ond*_*cny 5

因为没有变量你最终会得到无休止的递归,导致堆栈溢出 :-)

public int MyValue
{
    get { return MyValue; }
    set { MyValue = value; }
}  
Run Code Online (Sandbox Code Playgroud)

因此,您需要一个支持领域.保留备份字段的原因private隐藏实现细节.如果它是公开的,那么声明一个属性来访问它是没有任何意义的.

  • +1为无限递归的链接中的重要解释. (2认同)