说是在net3.0中可以这样写
public string test { get; set; }
而在3.0以前要:
private string _test;
public string test
{
  get { return _test; }
  set { _test = value; }
}
但是第一种写法,在.net 2.0中也可以用啊?   请教除了写法上节俭很多代码, 还有其他什么区别吗?

解决方案 »

  1.   

    自动属性
    在C# 2.0中:
    private int _a;
    public int A
    {
        get { return _a; }
        set { _a= value; }
    }
    在C# 3.0及以上,完全可以写成:
    public int A{ get; set; }
      

  2.   


    2.0中会出错?  我安装了vs2008,带了3.x,还没机会试验.
      

  3.   

    呃,楼主需要了解一下IL了,.net语言编译以后都会变成IL。
    首先回答你的问题,两种写法没有区别。是等效的。3.0以后的版本这样写不过是为了看起来比较简洁。
    然后分析下本质:
    在.net中,属性的get和set编译后最终其实等效于两个函数。get_字段 和 set_字段。
    第二种写法,编译器会自动的生成一个私有字段。
      

  4.   


    呃,谢谢提醒,刚用reflector看了下il 在2.0下无论用哪种写法,编译的都一样.
    那就也不存在自动属性不能用在2.0了啊
      

  5.   

    public int A{ get; set; }是用来替代public int A;的不是用来替代
    private int _a;
    public int A
    {
      get { return _a; }
      set { _a= value; }
    }
      

  6.   

    我觉得,如果单纯这样写
    public int A{ get; set; }
    跟public int A;
    没有区别
      

  7.   


    public int A;
     这样写就没有 get,set方法了啊