|
|
1
7
不。当您停止引用每个正常的托管.NET对象时,它都会被垃圾收集。IDisposable意味着您将实现一个需要调用方调用的Dispose()方法——它通常会释放未被垃圾收集的内容。它还有助于确定释放内存的位置。
http://www.atalasoft.com/cs/blogs/stevehawley/archive/2006/09/21/10887.aspx |
|
2
3
不,每个对象都是自动释放的。 IDisposable在对象解构时需要执行某种特殊操作时可用。例如,如果在对象工作期间锁定一些资源(如文件等),则可以在Dispose方法中释放它们。 |
|
|
3
1
当您想在代码中使用一些本机资源(如文件流)时,必须使用IDisposable。对于所有其他用途,.Net垃圾收集器都做得很好。
编辑:我建议你仔细阅读本书的垃圾收集一章 ClR via C# 作者:杰夫·里希特。 |
|
|
4
1
不。当用户定义的类不再在任何地方引用时,它就是垃圾集合。你可以通过这样做来强迫它
|
|
|
5
1
在.NET中,默认情况下,只要不再使用垃圾收集器,所有对象都应该从内存中释放出来,因此您不必在每个类上都实现IDisposable,但最好有某种内存释放机制,比如析构函数或Dispose方法本身。 http://www.developer.com/net/csharp/article.php/3343191/C-Tip-Forcing-Garbage-Collection-in-NET.htm |
|
|
6
1
不,没有。这个
What is the difference between using IDisposable vs a destructor in C#? |
|
|
7
1
您实现的dispose()方法用于显式释放对象所引用的非托管资源(文件、流、句柄等)。 这样做的目的是通过调用dispose方法尽快释放这些资源。dispose()方法不会立即在对象上运行垃圾回收,而是释放资源并允许垃圾回收器在方便的时候执行它的操作。 |