在学习属性时有个疑问:自动实现的属性有什么应用场合?为了以后程序的扩展性吗?欢迎高手跟帖。

解决方案 »

  1.   

            public string DeptName { get; set; }你指这吗??楼主
      

  2.   

     跟那种只是简单的get,set的属性没区别,只是不需要你再定义一个私有变量来存储值。编译器编译的时候自动给你生成了一个私有变量来存储属性的值。
      

  3.   

    问题是为什么要有这样的东西,对于开发者有什么实际意义?直接public string name;和
    public string Name{get;set;}对于实际应用有何影响?
      

  4.   


    public string Name{get;}
    这个属性就只可读不可写
    public string Name{set;}
    只可写不可读
      

  5.   

    自动实现的属性,必须是可读可写的,换言之,编译器肯定要同时生成get,set方法;
    采用这种方式,编译器会在内部自动生成一个私有字段的元数据,名字是不确定的,所以代码只能方法属性。
    好处是:
    你以后决定自己实现get/set方法时,访问属性的代码不必重新编译,但是声明为Name为字段那么以后又想改为属性那么访问字段的所有代码必须重新编译,以便能访问属性的方法。
      

  6.   

    顶楼上, 自动属性必须同时定义get;和set访问器, 否则就不能通过编译,并且也是没有实际意义的。
      

  7.   

    私以为原因有二:
    1. 不直接暴露Field,这是一个良好的设计习惯
    2. 为了象我这样的懒人少敲几个字母
      

  8.   

    属性是特殊方法。.net并没有属性这种东西,这是c#给你的功能。c#把它编译为set_XXX、get_XXX命名的方法。
      

  9.   

    public string DeptName { get; set; }
    编译的时候自动生成一个私有变量来存储属性的值。如果给出get和set的代码则灵活度,安全性更高,可以更好的控制。