public string Abc{get;set;}和string _Abc;
public string Abc
{
get{return _Abc;}
set{_Abc = value;}
}
具体有什么区别。

解决方案 »

  1.   

    一个意思  
    通过Abc
    访问_Abc
      

  2.   


    我一般用对完全开放的属性都用public string Abc{get;set;}这种用法,但是我看别人的代码不管是不是完全开放都用第二种写法,我用ildasm反编译生成的代码发现其实编译完之后的代码多了    // Fields
        [CompilerGenerated]
        private string <Abc>k__BackingField;
    很明显,在经过编译后,默认加上了一个隐含的字段。所以,事实上,我认为public string Abc{get;set;}其实就是一种简写。但是,为什么那么多人还愿意string _Abc;
    public string Abc
    {
    get{return _Abc;}
    set{_Abc = value;}
    }
    这么用呢?是不是还有什么别的原因。
      

  3.   


    难道我会在儿这跟你讨论win95怎么用?
      

  4.   

    string _Abc;
    public string Abc
    {
        get{return _Abc;}
        set{_Abc = value;}
    }可能是以前vs2005写的代码。vs2008编译器支持自动属性了。
      

  5.   

    我想问一句if(a>0)
        a=a+1;和
    if(a>0)
    {
      a=a+1;
    }
    有啥区别,为啥那么多人要用第二种呢?
      

  6.   

    第一种写法(简写)某些编译器(比如Visual Studio 2003和2005?)不支持。
    当需要额外处理的时候,就不能简写了,要用第二种写法:string abc;
    public string Abc
    {
      get{return abc;}
      set
      {
        if( string.IsNullOrEmpty(value) == false )  //<--
        {
           abc = value;
           OnPropertyChanged(this, ...);            //<--
        }
      }
    }
      

  7.   


    有一定道理!那可不可以说写成string _Abc;
    public string Abc
    {
        get{return _Abc;}
        set{_Abc = value;}
    }
    就算是一种良好的习惯呢?
      

  8.   

    微软已经将一些具体的实现封装了 所以可以直接使用get;set;
      

  9.   

    这个是看情况的,如果是我根本就知道他不会参与啥逻辑处理,现在不会以后也不会的,选择第一种如果是我自己知道,我有可能会需要一些逻辑处理的我会选择第二种实际上在vs里,这两种写法的成本代价没啥区别prop 和propfull 只是多了4个字符的代码(呵呵,时间4个字符都多不了,毕竟ide还有提示,大概只是多了1,2次上下键的代码)
      

  10.   

    public string Abc{get;set;}
    是3.0后的自动属性,
    string _Abc;
    public string Abc
    {
    get{return _Abc;}
    set{_Abc = value;}
    }
    做验证时还是实用的。