C# 自动实现的获取/设置属性
让C#创建通过使用自动属性创建(即{get;set})生成的私有支持字段有什么不利之处吗 我知道它是自动的,因此您无法自定义get/set,我想知道是否还有其他含义C# 自动实现的获取/设置属性,c#,.net,properties,accessor,automatic-properties,C#,.net,Properties,Accessor,Automatic Properties,让C#创建通过使用自动属性创建(即{get;set})生成的私有支持字段有什么不利之处吗 我知道它是自动的,因此您无法自定义get/set,我想知道是否还有其他含义 谢谢 我遇到的最大问题是,在查看绑定场景时,它通常非常有限。通常在使用数据绑定时,您需要实现自动属性不支持的数据绑定。最大的问题是,您无法使用支持字段,因为它们是由编译器创建的。这意味着您不能将它们声明为const或readonly,这意味着您不能在访问它们时添加逻辑(例如,延迟初始化),等等。好消息是,当您有理由时,从autopr
谢谢 我遇到的最大问题是,在查看绑定场景时,它通常非常有限。通常在使用数据绑定时,您需要实现自动属性不支持的数据绑定。最大的问题是,您无法使用支持字段,因为它们是由编译器创建的。这意味着您不能将它们声明为const或readonly,这意味着您不能在访问它们时添加逻辑(例如,延迟初始化),等等。好消息是,当您有理由时,从autoproperty开始可以使重构很容易地使用backing字段。如果您使用的是
二进制格式化程序,请更改为(或从)自动实现的属性是一个突破性的变化,因为字段名对BF很重要。当然,有一个简单的解决办法:不要使用BF
您也不能使用自动属性向支持字段添加属性
没有字段初始化器
不存在与不变性一起使用的truereadonly
显然,你不能添加逻辑;无惰性、验证、副作用或通知事件
对于structs,您需要在自定义构造函数上调用:this()
,这很难看
然而,除此之外,他们是伟大的。我是个超级粉丝。这不是什么问题。如果发现需要某些功能或其他功能,以后可以轻松地将自动属性转换为手动属性。这不是一个突破性的变化。