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)
第一种形式是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异常,因为它将进入无限循环)