Effective C# 摘录(2) - .NET资源管理

简介:

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

本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2007/03/15/676392.html,如需转载请自行联系原作者

相关文章
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
899 0
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
743 18
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
884 12
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
764 0
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
386 6
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
392 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
452 6
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
1247 13
|
Web App开发 C# Windows
一款.NET开源的Windows资源管理器标签页工具
一款.NET开源的Windows资源管理器标签页工具
454 5
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
1297 5