有琐碎的财产曾经拯救了你的培根?
在那里有很多建议,你不应该公开地暴露你的领域,而是使用普通的属性。 我一遍又一遍地看到它。
我理解这些论点,但我认为在大多数情况下这不是好建议。
有没有人有一个真正重要的时间的例子? 当写一个微不足道的财产在将来有可能变得重要时(或者当失败时会让他们陷入真正的麻烦)?
编辑:DataBinding参数是正确的,但不是很有趣。 这是DataBinding代码中的一个错误,它不会接受公共字段。 因此,我们必须编写属性来解决该错误,而不是因为属性是明智的类设计选择。
编辑:要清楚,我正在寻找真实世界的例子,而不是理论。 一个真正重要的时刻。
编辑:在setter上设置断点的能力看起来很有价值。 为调试器设计我的代码是不幸的:我宁愿调试器变得更聪明,但考虑到我们有调试器,我会采取这种能力。 好东西。
在一个不确定的未来可能很难使代码工作,但这不是懒惰的借口。 在字段上编码属性是惯例,它是务实的。 称之为防御性编程。
其他人也会抱怨速度问题,但是JIT'er足够聪明,可以让它快速曝光公共领域。 足够快,我永远不会注意到。
想到一些不平凡的东西
get
和set
可访问性(例如公开获取,内部设置) 您只需输入13个字符以保证正确性。 这似乎不像投机一般。 存在语义上的差异,如果没有别的,一个属性具有不同的语义含义,并且比公共领域更加灵活。
public string Name { get; set; }
public string name;
在第一次使用.net时我记得有一次.net我将几个类编码为只是字段,然后我需要将它们作为属性出于某种原因,并且当我可以刚刚完成第一个时,它完全浪费时间时间。
那么你有什么理由不遵循约定? 你为什么觉得需要游泳? 没有这样做,它为你节省了什么?
调试时,我有一个简单的属性可以节省我几次。 .Net不支持数据中断点的概念(读或写)。 偶尔,在调试一个非常复杂的场景时,跟踪对特定属性的读/写操作非常重要。 这是一个财产容易,但不可能与一个领域。
如果您不在生产环境中工作,则为了调试目的而重构字段 - >属性非常简单。 偶尔你会遇到只能在生产环境中复制的错误,而这种错误很难用新的二进制文件修补。 一个属性可以将你保存在这里。
不过,这是一个相当有限的情况。
杰伊,我曾经想过同样的事情。 为什么要使用一个财产,如果它只是为了直接访问私人会员? 如果你可以把它描述成一个自动属性,那么拥有一个属性而不是一个属性就显得很愚蠢。 即使你需要改变实现,你以后可以随时重构一个真实的属性,任何相关的代码仍然可以工作,对吧? 好吧,也许不是。
你看,我最近看到了轻微的属性,所以也许现在我可以帮你做同样的事情。
最后让我相信的是相当明显的一点(现在回想起来).Net中的属性只是getter和setter方法的语法糖,而这些方法与属性本身的名称不同。 无论如何,在同一个程序集中的代码仍然可以工作,因为你必须同时重新编译它。 但是,如果您将某个字段重构为某个属性,除非它同时针对您的新版本重新编译,否则链接到您的另一个程序集中的任何代码都将失败。 如果从一开始就是财产,一切都还是不错的。
链接地址: http://www.djcxy.com/p/51341.html上一篇: Have trivial properties ever saved your bacon?
下一篇: DefaultValue attribute is not working with my Auto Property