Why is it good to use Properties instead of fields?
我读了很多关于我不应该在我的模型和DTO中使用字段的文章,但我从来没有读过这是为什么。
1 2 3 | public int property{ get; set; } public int Foo; |
在引擎盖下面,这两者之间的区别是什么?
重要的是一个差分接口CAN有不场的属性。
这篇文章是非常有用的乔恩飞碟通过给定三本。
Practical benefits of properties
There are times when you could use non-private fields, because for
whatever reason you don't care about the compatibility reasons above.
However, there are still benefits to using properties even for trivial
situations:
- There's more fine-grained access control with properties. Need it to be publicly gettable but really only want it set with protected
access? No problem (from C# 2 onwards, at least).- Want to break into the debugger whenever the value changes? Just add a breakpoint in the setter.
- Want to log all access? Just add logging to the getter.
- Properties are used for data binding; fields aren't.
一个好的理由是因为它允许你incluede逻辑和验证内部的吸气和制定
采取从http://///propertiesmatter.aspx csharpindepth.com文章的第八章
福利院的实际性能
时代当你有可以使用的非私人机场,因为任何原因你不关心"的原因。然而,有安静的利益甚至琐碎的情况:使用性能研究
有更多的访问控制属性和细晶。人们需要的gettable但真的只想要它集和保护访问?NO的问题(从C 2 onwards #,至少)。要一直休息到调试器的价值的变化?只是添加一个断点在犬。要记录所有的访问?只是添加记录到吸气剂。属性是用于数据绑定;域不是。这些都是传统的"房地产综合利用逻辑"是不可能的,但所有的狡猾与平原/域。你可以这样做在"当我需要它"的基础,为什么不只是在一个一致的开始?它甚至更多的没有头脑的A和C # 3自动性能。
曝光的哲学原因为只读属性
你写的每一型,你应该考虑它的接口到世界其他地方(包括组装在同一班)。这是什么使得它可以描述的,它的外形象。执行工作的一部分不应该是描述,是任何比它已经是。(这是为什么我喜欢的组成是在继承,继承自己的理解为基础的决策选择或可能实现的限制。)
a物业communicates的想法"我想做一个给你的价值的价值,或接受一个你。"它在实现的概念,它在界面的概念。在另一场communicates外部信息的手,说:"这是一本代表值的类型特异性的方式"。有没有类似草药,它的存储格式。这是部分原因,部分接口场不属于他们don’t有知识的东西,他们谈论的是什么更比我更。
我很同意,很多时候,在没有使用域可以是终身的问题中的应用。它只需要一个明确的情况下,那些沉默的时代,它的设计原则violates危机曝光执行。