《effective c#》中Item one中就讨论了属性和公共字段的问题。显然公共字段破坏了类的封装性,并且不容易控制。而属性则让我们以类似访问公共字段的形式访问私有字段。对此,以前的解决方式就是私有字段+Set()&Get()函数来控制。查看IL对比了一下,相对于我们自己写访问函数,属性内部维护了这么两个函数,同时多了属性的一个instance,但这个差别应该算是很小的。在看《CLR Via》属性一节时,Jeffrey一个关于属性观点是属性混淆了我们对我们行为的理解,我们像是在操作一个字段,而实际上我们在调用方法,另外,他还提出了几种情况下属性的性能问题。在我们认清理解属性的情况下,实际上并不会存在这么一种混淆,因为我们知道它在做什么。无参属性的情况下,性能应该差不了多少。至于在remoting情况下,还没有做测试。我认为还是用属性比较方便一些,况且如果有性能问题,这个并不是瓶颈。

posted on 2007-06-19 15:03  绿蚂蚁  阅读(160)  评论(0编辑  收藏  举报