日期:2014-05-18  浏览次数:20807 次

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";
                }
            }
        }

------解决方案--------------------
第一种方法,应该把后备字段定义成私有的。
第二种方法,后备字段已经自动实现了,再写一遍画蛇添足,反而错误。