自动实现的属性c#有人能解释一下使用自动实现的属性c#背后的想法吗?publicclassCustomer{publicintID{get;放;}公共字符串名称{得到;放;我有动机使用私有字段的属性,因此我们可以确定如何访问私有字段。但在这里-这就像从一开始就将字段定义为public。不?将字段定义为“publicconst”或将其定义为具有get-only属性之间有区别吗?与公共字段不同,公共自动属性不是二进制兼容的。如果您实现了一个公共字段,并且稍后想要添加一些逻辑,您将不得不将其更改为一个属性,从而引入重大更改(因为二进制不兼容)。这就是为什么许多约定声明您不应该公开公共字段而应该使用属性。因此,自动属性只是任何简单的非私有类值成员的一个方便的起点,允许稍后添加逻辑,同时保持二进制兼容性。属性可以是数据绑定的,但字段不能。自动实现的属性基本上是语法糖。编译后,后备存储就存在了。它只是不在源代码中。正如其他人所说,属性和字段是不一样的。字段和属性不兼容,因此在它们之间进行更改是一项重大更改。此外,您不能使用绑定到字段的数据。最后一点。尽管在您的情况下,示例和公共字段之间的功能差异很小,但您可以更改其中一个访问器的可见性。因此,要创建具有自动属性的只读属性,您可以这样做:publicintID{get;私有集;在这种情况下,根据整个签名,get访问器是公共的,但set访问器是私有的。我会让MSDN在这里为自己说话......“在C#3.0和更高版本中,当属性访问器中不需要额外的逻辑时,自动实现的属性使属性声明更加简洁。它们还允许客户端代码创建对象。当您声明一个属性时,如下面的示例(参见MSDN文章),编译器创建一个私有的匿名支持字段,只能通过属性的get和set访问器访问“可能最有益的区别是您可以做ex定义一个字段为“publicconst”和定义为具有get-only属性有区别吗?是的,一个get-only字段必须有一个privatefielddeclaration。该字段可以在里面Changedbyclass,标记一个fieldasconst表示不能修改。2:publicconst必须在编译时定义,不能使用引用对象。只有继承自System.ValueType(string,int,double,...)的类const也是static的,而propertieswithonlygettersarenot(everyclasshasitsowninstance.)关于1:建议使用自动实现的属性,因为您可以稍后实现其他逻辑而不会破坏更改。您可以了解自动实现的属性在上面找到这个例子是C#学习教程:自动实现的属性,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
