happyhippy

这个世界的问题在于聪明人充满疑惑,而傻子们坚信不疑。--罗素

12:变量声明时初始化优于赋值语句。
   Prefer Variable Initializers to Assignment Statements。
   若类的实例变量成员在声明时初始化,初始化代码会内联到该类的每个实例构造函数中:构造对象实例时,先执行初始化代码,再调用基类构造函数,最后执行构造函数中代码。
   当构造函数有多个重载版本时,建议在定义字段时避免进行初始化,而应该将这些公共的初始化语句放在一个构造函数中,然后使其他的构造器显示地调用这个初始化构造函数。  

13:使用静态构造器初始化静态类成员。
   Initialize Static Class Members with Static Constructors.
   若类中的静态变量成员在声明时初始化,初始化代码会内联到类的静态构造函数中:运行时,先执行初始化代码,再执行静态构造函数中的代码。建议:简单静态成员可以直接在声明时初始化,而可能产生异常的初始化则应放在静态构造函数中初始化。

14:利用构造器链。
   Utilize Constructor Chaining.
   只能使用this(args)(构造器链中的最后一个构造函数中调用Base))和base(args)中一个,不能同时使用。

15:利用using和try/finally语句来清理资源。
   Utilize using and Try/finally for Resource Cleanup.
   using所使用的对象必须继承IDisposable,且不支持运行时类型检查(可用as转换,但可能会隐藏bug,一般确保每一个实现了IDispose接口的对象分配在在using范围内)。

16:尽量减少内存垃圾。
   Minimize Garbage.
   使用类成员而代替每个函数中都用到的局部变量;使用Singleton模式来实现公用对象或将其实现为对象池。

17:尽量减少装箱与拆箱。
   Minimize Boxing and Unboxing。
   防止隐式装箱。eg:Console.WriteLine( "Number list:{0}, {1}, {2}",1,2,3 );=>Console.WriteLine( "Number list:{0}, {1}, {2}",1.ToString(),2.ToString(),3.ToString() );

18:实现标准Dispose模式。
   Implement the Standard Dispose Pattern.
   Dispose()应做的工作:释放所有非托管资源;释放所有托管资源,这包括取消事件绑定;设置标志位,标明对象已经释放;调用“GC.SuppressFinalize(this)”来避免GC再去掉用对象的析构函数。
   如果父类和子类都使用了非托管资源,则子类在重载父类的Dispose()函数中,要记得显式调用父类的Dispose()。
    

posted on 2007-03-15 20:04  Silent Void  阅读(466)  评论(0编辑  收藏  举报