在Java的类库中,很普遍的可以看到公有的数据成员,但在Dot Net类库中,则很难看到。这很大程度上得益于C#的独创语法Property。
很多人认为公有数据成员的效率要貌似比使用Property高,但是实际上是,编译器会很聪明地帮我们优化代码,所以在同等情况下,效率是不差的。如果没有特殊需求的话,软件更要关注的是代码的可维护性,可读行,扩展性。Property的灵活性是Data Member无法比拟的,而使用方法却一样简洁。所以Effictive C#建议我们:Always Use Properties Insdead of Accessible Data Members.
Property最直观的好处是可以把Setter和Getter分开编写,可以给属性设置只读或只写权限。
Property的本质其实还是方法。 其读写操作可以在内部任意加工操作。Property继承了方法所有的优点。
1,在多线程程序中可以加锁
2,可以在抽象类甚至于接口中声明
3,支持各种继承规则,并可以分别设置Setter和Getter(如protected的Setter ,Public的Getter)
4,支持Indexer
尽管有时会觉的写一大串Property很啰嗦,有时候甚至完全没有必要,但是为了软件的未来可能的边着想,现在多花点功夫还是值得的。