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