这只是一个字段,也就是直接在类或结构上声明的变量:
public string Name;
这是一个属性:
public string Name { get; set; }
它们在功能上是相似的。getter 和 setter 允许您分别自定义访问或设置变量时发生的情况。传统上,属性用于公开在类内部用于工作的私有字段。您这样做是为了公开变量,而不允许人们进入并更改或破坏类的内部工作。
这是封装的一部分。
在这个特定的语法中,您“自动实现”了 getter 和 setter,这会创建一个隐藏的支持字段,您在代码中的任何地方都看不到它。结果是使用它看起来与仅使用字段非常相似。
在这种情况下为什么不只使用一个字段?除了导致更好的设计之外,还有更多与惯例有关的重要含义。例如,在很多涉及数据绑定的情况下,只考虑用于绑定的属性。字段被忽略。所以在实体框架中,一个属性可能代表数据库中的一列......而且它必须是一个属性。它不能是一个普通的字段。
这里的关键教训是,如果您想在课堂之外公开一个字段,您应该使用一个属性来促进封装并向其他人(在某些情况下还有代码)发出信号,表明您确实打算公开您所公开的内容。
更多:字段和属性有什么区别?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句