Effective C# 读书笔记 第一章

原则一:
尽可能的使用属性(property),而不是数据成员(field)。
Always use properties intead of accessible data member.

原因:
1.Net对属性的支持远远大于对成员的支持,你可以对属性进行数据绑定,设计时说明等很多数据成员不被支持的内容。

2.数据安全性检测;在对数据检测时,如果发现数据不满足条件,最好以抛出异常的形式来解决,千万不要设置默认值,这是很危险的事情

3.线程同步 对实例的属性可以进行线程同步,而与访问者无关


4.属性可以是抽象的,而数据成员不能是抽象的,这为我们设计出兼容性更强,扩展性更强的类提供了好的解决方案。

 

5.属性可以以接口的形式表现。接口里不能定义数据成员,这在一定程度上限制我们的设计。请用属性来解决这个问题吧。

6.基于属性的索引。索引器是C#语法的特殊内容,而索引器正是通过属性来完成的,如果你想为你的类添加一个索引器,除了用属性你还能用什么呢?

7.最后一点,也是比较重要的。不要直接把公共成员转化成属性。


 

 

Code


原则二:
为你的常量选择readonly而不是const
readonly称为运行时常量
const称为编译时常量

比较:
1.编译时常量只能是基本类型 枚举或者是字符串,如果是引用类型则其值必须设为null。 对于运行时常量无此限制。

2.编译时常量在定义是赋值。 运行时常量在定义时赋值,或者在构造函数里赋值。

3.编译时常量自身有静态的属性,所以不能再用static进行修饰。 运行时常量可以用static修饰,也可以不用static。

4.编译时常量在编译时被替换到code里了,运行时常量是在运行时去读取常量的值。所以如果改了const,那么所有的code都要重新编译。

5.编译时常量性能更好一些。
posted @ 2008-07-01 12:07  Simon.guo  阅读(221)  评论(0编辑  收藏  举报