关于 set; get; 的一些有关问题

关于 set; get; 的一些问题
方法1:

private string _value;
public string Value 
{
  get { return _value; }
  set { _value = value; }
}


方法2:

public string Value { get; set; }


请问大师们,这2中方法一样吗? 我看到很多的程序都有各种写法.但如果一样,为何有些写复杂了.难道是习惯问题?

------解决方案--------------------
效果一样,上面的写法多数是自动生成的,下面的代码则是手写产生的。完全是习惯问题。
------解决方案--------------------
public string Value { get; set; }
方法2自动属性

如果想要对赋值的属性做些约束判断,用方法1
------解决方案--------------------
好像是2.0以前是第一种写法 后来就变成了第二种写法 好像是.....
------解决方案--------------------
http://msdn.microsoft.com/en-us/library/vstudio/ms228368.aspx
------解决方案--------------------
方法1和方法2是一样的,

如果一样,为何有些写复杂了.难道是习惯问题?

貌似是.net3.0之前是没有自动属性的,所以老一点的代码,都会像方法1一样来写
------解决方案--------------------
引用:
http://msdn.microsoft.com/en-us/library/vstudio/ms228368.aspx
关于 set; get; 的一些有关问题
------解决方案--------------------
第二种写法在编译时会自动生成类似第一种写法,只是成员名称有点特殊;是3.0以后的一个功能,即在编写进可以不用写局部变量,提高编代速度而以,你可以按第二种写法,编译后,用反编译查看一下就什么都知道了;
但在特定情况下,第二种写法可能无法实现
------解决方案--------------------
如果get, set 里要加一些逻辑,就只能用第一种写法了
------解决方案--------------------
引用:
明白了,完全是习惯问题。

你还是没明白

framework早期版本没有那种写法 后期才有的 是为了方便程序员

正如:早期没有linq一样 
------解决方案--------------------
区别应该没有

第一种清晰明了,当然加限制也是需要第一种的
------解决方案--------------------
若没有约束,用方法2 有约束用方法1
------解决方案--------------------
荟香豆有几种写法
------解决方案--------------------
效果一样,上面的写法多数是自动生成的,下面的代码则是手写产生的。
------解决方案--------------------
引用:
第二种写法在编译时会自动生成类似第一种写法,只是成员名称有点特殊;是3.0以后的一个功能,即在编写进可以不用写局部变量,提高编代速度而以,你可以按第二种写法,编译后,用反编译查看一下就什么都知道了;
但在特定情况下,第二种写法可能无法实现

确实第二种写法有些情况是满足不了的,比如说在WPF中使用MVVM绑定时的一种写法:


public class MainWindowViewModel : INotifyPropertyChanged
    {
        private ObservableCollection<string> _Collections;
        public ObservableCollection<string> Collections
        {
            get { return _Collections; }
            set {
                if (_Collections != value)
                {
                    _Collections = value;
                    OnPropertyChanged("Collections");
                }
            
            }
        }

        public MainWindowViewModel()
        {
        }

        public void OnPropertyChanged(string name)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(name));
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
    }