属性和字段有什么区别?

帕特里克星

你好这个字段有什么区别:

public string Name;

而这个属性:

public string Name{get;set;} 

我读了这个话题:

什么是{得到; 放; C# 中的语法?

布赖恩·麦凯

这只是一个字段,也就是直接在类或结构上声明的变量:

public string Name;

这是一个属性:

public string Name { get; set; } 

它们在功能上是相似的。getter 和 setter 允许您分别自定义访问或设置变量时发生的情况。传统上,属性用于公开在类内部用于工作的私有字段。您这样做是为了公开变量,而不允许人们进入并更改或破坏类的内部工作。

这是封装的一部分。

在这个特定的语法中,您“自动实现”了 getter 和 setter,这会创建一个隐藏的支持字段,您在代码中的任何地方都看不到它。结果是使用它看起来与仅使用字段非常相似。

在这种情况下为什么不只使用一个字段?除了导致更好的设计之外,还有更多与惯例有关的重要含义。例如,在很多涉及数据绑定的情况下,只考虑用于绑定的属性。字段被忽略。所以在实体框架中,一个属性可能代表数据库中的一列......而且它必须是一个属性。它不能是一个普通的字段。

这里的关键教训是,如果您想在课堂之外公开一个字段,您应该使用一个属性来促进封装并向其他人(在某些情况下还有代码)发出信号,表明您确实打算公开您所公开的内容。

更多:字段和属性有什么区别?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章