1.总是用属性 (Property) 来代替可访问的数据成员®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
2.在  readonlyconst 之间,优先使用 readonly®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
3.在 as 和 强制类型转换之间,优先使用 as 操作符®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if ®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
5.总是为自定义类重载 ToString 方法®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
6.区别值类型和引用类型®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
7.使用不可变的值类型(Immutable Atomic Value Types)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
8.在值类型中,确保0是一个合法的数据®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
9.理解 ReferenceEquals, static Equals, instance Equals 和 比较运算符(==)之间的关系®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
10.理解 GetHashCode方法的缺陷®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
11.在编写循环时,优先使用
foreach.®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
12.在定义变量的时候就将其初始化®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
13.使用静态构造函数来初始化静态成员变量®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
14.用多个构造函数时,利用构造函数链®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
15.使用usingtry/finally来处理资源的释放®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
16.尽量避免产生资源垃圾®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
17.尽量避免使用装箱(boxing)和拆箱(unboxing)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
18.实现类的 Dispose 方法®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
19.在接口和继承(Inheritance)之间,优先使用接口(interface)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
20.区分接口和重载(overrides)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
21.用委托(delegate)来实现回调(callback)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
22.用事件(event)来定义外部接口®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
23.避免返回类内部成员的引用®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
24.使用元数据来控制程序®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
25.优先使用可序列化(serilizable)类型®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
26.对需要排序的对象实现IComparableIComparer接口®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
27.避免使用 ICloneable接口®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
28.避免使用类型转换操作符®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
29.只有当基类加入了与派生类中现有的函数名称相同的函数时,才需要使用 new 操作符®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
30.尽量使用 CLS-Compliant ®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
31.尽量编写短少,简单的函数®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
32.尽量编写比较小的程序集(assembly)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
33.限定类型的可见性(visibility)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
34.编写大粒度的 web API®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
35.在使用事件时,优先继承基类事件,而不是重新创建一个事件®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
36.多使用 framework 的运行时调试 (DEBUG, TRACE, EVENTLOG等)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
37.使用.net标准的配置机制®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
38.使用并且在类中支持.net的数据绑定功能 (Data Binding)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
39.使用.net的验证机制 (Validation)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
40.根据你的需求选择正确的集合类(Collection)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
41.在自定义结构中使用
DataSet ®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
42.利用属性(Attributes)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
43.不要过度使用反射(Reflection)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
44.创建完整的,应用程序特定的异常®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
45.尽可能多的考虑程序可能出现的异常,并作出处理®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
46.尽可能少的使用 Interop®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
47.尽量使用安全代码 (safe code)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
48.多多学习、使用外部工具和资源®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
49.准备使用 C# 2.0®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
50.学习 ECMA 标准
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤