C++编程人员容易犯的10个C#错误.docx

上传人:M****1 文档编号:561942113 上传时间:2023-12-10 格式:DOCX 页数:4 大小:13.21KB
返回 下载 相关 举报
C++编程人员容易犯的10个C#错误.docx_第1页
第1页 / 共4页
C++编程人员容易犯的10个C#错误.docx_第2页
第2页 / 共4页
C++编程人员容易犯的10个C#错误.docx_第3页
第3页 / 共4页
C++编程人员容易犯的10个C#错误.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《C++编程人员容易犯的10个C#错误.docx》由会员分享,可在线阅读,更多相关《C++编程人员容易犯的10个C#错误.docx(4页珍藏版)》请在金锄头文库上搜索。

1、 C+编程人员容易犯的10个C#错误几乎可以完全确定地说,对于大多数C+编程人员而言,C#与C+的不同之处就在于碎片收集。这也意味着编程人员再也无需担忧内存泄露和确保删除全部没有用的指针。但我们再也无法准确地掌握杀死无用的对象这个过程。事实上,在C#中没有明确的destructor。 假如使用非可治理性资源,在不使用这些资源后,必需明确地释放它。对资源的隐性掌握是由Finalize方法(也被称为finalizer)供应的,当对象被销毁时,它就会被碎片收集程序调用收回对象所占用的资源。finalizer应当只释放被销毁对象占用的非可治理性资源,而不应牵涉到其他对象。假如在程序中只使用了可治理性资

2、源,那就无需也不应当执行Finalize方法,只有在非可治理性资源的处理中才会用到Finalize方法。由于finalizer需要占用肯定的资源,因此应当只在需要它的方法中执行finalizer。直接调用一个对象的Finalize方法是肯定不允许的(除非是在子类的Finalize中调用根底类的Finalize。),碎片收集程序会自动地调用Finalize。 从语法上看,C#中的destructor与C+特别相像,但其实它们是完全不同的。C#中的destructor只是定义Finalize方法的捷径。因此,下面的二段代码是有区分的: MyClass() / 需要完成的任务 MyClass.Fin

3、alize() / 需要完成的任务base.Finalize(); 错误2:Finalize和Dispose使用谁? 从上面的论述中我们已经很清晰,显性地调用finalizer是不允许的,它只能被碎片收集程序调用。假如盼望尽快地释放一些不再使用的数量有限的非可治理性资源(如文件句柄),则应当使用IDisposable界面,这一界面有个Dispose方法,它能够帮你完成这个任务。Dispose是无需等待Finalize被调用而能够释放非可治理性资源的方法。 假如已经使用了Dispose方法,则应当阻挡碎片收集程序再对相应的对象执行Finalize方法。为此,需要调用静态方法GC.Suppress

4、Finalize,并将相应对象的指针传递给它作为参数,Finalize方法就能调用Dispose方法了。据此,我们能够得到如下的代码: public void Dispose() / 完成清理操作/ 通知GC不要再调用Finalize方法GC.SuppressFinalize(this);public override void Finalize() Dispose(); base.Finalize(); 对于有些对象,可能调用Close方法就更适宜(例如,对于文件对象调用Close就比Dispose更适宜),可以通过创立一个private属性的Dispose方法和public属性的Close

5、方法,并让Close调用Dispose来实现对某些对象调用Close方法。 由于不能确定肯定会调用Dispose,而且finalizer的执行也是不确定的(我们无法掌握GC会在何时运行),C#供应了一个Using语句来保证Dispose方法会在尽可能早的时间被调用。一般的方法是定义使用哪个对象,然后用括号为这些对象指定一个活动的范围,当遇到最内层的括号时,Dispose方法就会被自动调用,对该对象进展处理。 using System.Drawing; class Testerpublic static void Main()using (Font theFont = new Font(“Arial“, 10.0f)/使用theFont对象 / 编译器将调用Dispose处理theFont对象Font anotherFont = new Font(“Courier“,12.0f);using (anotherFont)/ 使用anotherFont对象 / 编译器将调用Dispose处理anotherFont对象

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号