get与set
1、public string name;
public string Name
{
get { return this.name; }
set { this.name = value; }
}
2、public string name;
public string Name
{
get;
set;
}
请问1和2有什么区别?
------解决方案--------------------1里的属性和字段建立了关联,而2的则无任何关联,2中的匿名属性会自动创建对应的字段,而不使用你定义的name字段。
------解决方案--------------------get是外部用来读取你封装的这个字段,而set刚好相反是给该字段赋值的;
1和2 的区别就在于:1 可以通过属性来访问你封装的字段和赋值 而 2却不能。
------解决方案--------------------第一种:常规写法
第二种:懒人写法
正常使用上是没有区别的
但总会有一些区别
比如:
第二种做不了逻辑判处理
C# code
private string name;
public string Name
{
get { return this.name; }
set
{
this.name = value;
if (String.IsNullOrEmpty(name))
{
name = "newName";
}
}
}
------解决方案--------------------
第一种方法,应该把后备字段定义成私有的。
第二种方法,后备字段已经自动实现了,再写一遍画蛇添足,反而错误。