博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Effective C# 摘录(2) - .NET资源管理
阅读量:6693 次
发布时间:2019-06-25

本文共 1278 字,大约阅读时间需要 4 分钟。

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()。
    

转载于:https://www.cnblogs.com/happyhippy/archive/2007/03/15/676392.html

你可能感兴趣的文章
Nordic Collegiate Programming Contest 2016
查看>>
基础复习-算法设计基础 | 复杂度计算
查看>>
201671010128 2017-09-17《Java程序设计》之步步深入面向对象
查看>>
Linux内核在I386架构下的内存管理
查看>>
打包文件 MANIFEST.MF 功能详解
查看>>
构建vue单页应用(一)
查看>>
最小公倍数
查看>>
HDOJ_ACM_Can you find it?
查看>>
SpringMVC-常用的注解
查看>>
羊车门问题
查看>>
【总结整理】overflow: auto/hidden;清除自己
查看>>
用substr()截取中文出现乱码的解决方法
查看>>
Java练习 SDUT-2400_高中数学?
查看>>
UGUI组件之InputField 组件简单笔记(输入栏 输入框 )
查看>>
java-随学随记之基础篇
查看>>
Linux 统计文件夹,文件数量的命令
查看>>
js 中的 exec( )方法
查看>>
8.常量如何取值
查看>>
spring hibernate实现动态替换表名(分表)
查看>>
精通ArrayList,关于ArrayList你想知道的一切
查看>>