Private string _name;
public string Name 
{
   get {return _name;}
   set {_name = value;}
}
和public string Name{get;set;}
有什么不同或者两者有什么不同的用处或优势吗

解决方案 »

  1.   

    下面的用法是“自动属性”,只能在VS08、VS10、VS12使用。
      

  2.   

    public string Name{get;set;}
    VS2010 一下好像不支持这样写。
    public <返回类型(与要修改和访问的字段同类型)> <属性名(不要与字段同名)>

    get 

    return <需要访问修改的字段>; 

    set 

    <需要访问修改的字段>=value; 


    当你使用属性来访问该字段时 就会调用里面的get方法,当你要修改该字段时,就会调用set方法,也就时说get方法和set方法不是每个属性必有的(也就是说你定义一个属性的时候可以只写get方法不写set方法,反之也可以。两者都不写也行)。当只有get的时候,只能访问 不能修改;当只有set的时候,只能修改,不能访问;
    1
      

  3.   

    但就你写的这两者是没有区别的,编译之后是完全一样的。
    但是
    如果,你想在get或者set里面做一些别的操作下面的写法就没法弄了。
    比如
    private string oldname;
    Private string _name;
     public string Name 
     {
        get {return _name;}
        set { oldname = _name; _name = value;}
     }
      

  4.   

    纠正下
    public string Name{get;set;}
    VS2008 以下好像不支持这样写。
    “自动属性”的语言特性提供了一个优雅的方式来使得你的编码更加简洁,同时还保持属性的灵活性。自动属性允许你避免手工声明一个私有成员变量以及编写get/set逻辑,取而代之的是,编译器会自动为你生成一个私有变量和默认的get/set操作。