您的位置:首页 > Web前端

Effective C# 读书笔记 第一章

2008-07-01 12:07 260 查看
原则一:

尽可能的使用属性(property),而不是数据成员(field)。

Always use properties intead of accessible data member.

原因:

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

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

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

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

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

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

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

using System;

2using System.Collections.Generic;

3using System.Text;

4

5namespace TestProperty

6

102

103

104

105

106

107

原则二:

为你的常量选择readonly而不是const

readonly称为运行时常量

const称为编译时常量

比较:

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

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

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

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

5.编译时常量性能更好一些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: