关于set和get方法的不同写作风格

Tah*_*aca 0 c# oop set getter-setter

我关于set和get方法的问题..虽然我知道如何使用以及为什么使用它,但我无法理解这些使用样式之间的主要区别......

public string a{get;set;} 

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

Hab*_*bib 5

第一种形式是C#中自动实现的属性

在C#3.0及更高版本中,当属性访问器中不需要其他逻辑时,自动实现的属性使属性声明更简洁.

当前形式的第二种形式(虽然不正确)需要显式定义支持字段,您可以设置显式代码来设置和读取值.

第二种形式可以是:

private string _a; // a backing field
public string a
{
    get
    {
        return _a;
    }
    set
    {
        if (a != null) //some validation
            _a = value;
        else
            _a = string.Empty;
    }
}
Run Code Online (Sandbox Code Playgroud)

(目前你的第二种形式的属性会导致stackoverflow异常,因为它将进入无限循环)