日期:2014-05-17  浏览次数:20947 次

关于 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

------解决方案--------------------
第二种写法在编译时会自动生成类似第一种写法,只是成员名称有点特殊;是3.0以后的一个功能,即在编写进可以不用写局部变量,提高编代速度而以,你可以按第二种写法,编译后,用反编译查看一下就什么都知道了;
但在特定情况下,第二种写法可能无法实现
------解决方案--------------------
如果get, set 里要加一些逻辑,就只能用第一种写法了
------解决方案--------------------
引用:
明白了,完全是习惯问题。

你还是没明白

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

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

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

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


public class MainWindowViewModel : INotifyPropertyChanged
    {
        private ObservableCollection<string> _Collections;
        public ObservableCollection<string> Collections
 &nb