C#getters、setters声明可能重复:为什么要使用getters和setters?C#3.0自动属性——有用还是没用?以下列方式定义属性之间是否存在差异–//private,withgetter&setterprivatestringfName;publicstringName{get{returnthis.fName}set{this.fName=value}}//定义为属性publicstringName{get;set;}据我所知,它看起来只是一种风格偏好。我错过了什么吗?区别:第二个版本是所谓的自动实现的属性(或简称“自动属性”)。它们是在C#3中引入的。如果您只是编写看起来像第一个版本的代码——即不涉及逻辑——那么自动属性就很棒。您可以稍后通过将逻辑转换为第一种形式来添加逻辑。您的所有代码都将与源代码和二进制兼容性条款的更改兼容。请注意,自动属性不允许您指定默认值,并且没有真正的只读自动属性(即没有getter的属性)。您将获得的最接近的是带有私有设置器的公共获取器,例如publicstringName{get;私有集;它并不完全相同,但在很多情况下已经足够接近了。第一个是标准属性。您必须定义一个字段来存储该值。第二个是自动实现的属性,仅在C#3.0及更高版本中可用。答案在IL中。使用ildasm并进行比较。http://msdn.microsoft.com/en-us/library/f7dy01k1%28v=VS.90%29.aspx最终,它在这种情况下做同样的事情。当您想要将任何规则应用于get/set时,区别就来了,在这种情况下,您需要使用私有/受保护变量并将其隐藏在公共属性后面。事实上,当您使用较短的版本时(publicstringName{get;set;}),编译器会自动为该属性生成一个私有字段。以上就是C#学习教程的全部内容:C#getters、setters的声明与分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
