【发布时间】:2015-03-16 00:49:23
【问题描述】:
可能是重复的问题。 我确实搜索过这个并参考了这些文章
- use of properties vs backing field inside owner class,
- should i prefer properties with or without private fields,
- Properties Matter。
我的理解是,
- 访问类似于使字段只读
- 我们可以在 中包含一些逻辑
- setter/getter 用于数据绑定
我真正想澄清的是,
public class Employee {
public string strName;
}
public class Employee {
public string strName {get;set;}
}
我的问题:
- 这两种实现有什么区别
- 是否有任何地方(我的意思是实际场景)我们可以证明需要自动实现属性而不是第一个实现,如上所示。
更新
我知道这是一个重复的问题,我提到了它。请考虑我提出的问题的第二点。 答案究竟是什么? 我无法理解。
如果我没有任何逻辑来设置该值,这是一种好的做法还是需要什么?
好的,谢谢大家的回复。我现在明白了。由于我很新,我无法掌握它。但现在我明白了。很抱歉浪费了你所有的时间。
【问题讨论】:
-
实际上,您在开头列出的三点是使用自动实现的属性无法完成的三件事,或者至少不能以灵活或完整的方式完成与完全编写的属性一样。
-
选择是自动还是手动实现的属性,仅仅暴露一个成员变量是错误的。想想在成熟的代码库中必须围绕设置名称放置一些逻辑的后果。哦,停止使用匈牙利符号。
-
@O.R.Mapper 感谢您的回复。好的,那么有什么地方可以证明我在上一部分中询问的正常实现对 aip 的需求是合理的
-
这是一个有用的答案,可以解决您的问题:stackoverflow.com/a/5203341/2777098
-
自动实现是语法糖,只是让您不必为每个属性编写 getter 和 setter,仅此而已
标签: c# .net properties