为什么Dispose方法不适用于字符串对象?

6

为什么在C#中字符串对象不能使用Dispose方法? 我们知道,Dispose()是用于释放对象的方法。但为什么它不允许在字符串对象或整数对象上使用?

编辑:什么是托管对象的意思?请指导我。

4个回答

12

不需要,Dispose是一种用于处理GC无法管理的资源的方法。字符串只是一个普通的托管对象,因此会被垃圾回收自动释放。


1
@Latit:托管对象是引用类型的实例。它通过实例化该类型来分配,并且相关内存在某个时刻自动回收垃圾。只要对象不使用任何非托管资源(例如操作系统句柄),甚至无需实现IDisposable接口。 - Brian Rasmussen

3

Dispose是释放所有外部资源的意思,而字符串和整数是简单数据类型,没有外部资源。


0

释放对象并不是你想做的事情,而是必须做的事情。内存通常由垃圾回收器管理,它会释放未使用的内存。未使用意味着在你的应用程序中没有任何引用指向该对象。

有些资源不能(或者不应该)由垃圾回收器管理,它们被称为“非托管资源”。例如:磁盘上的文件或数据库连接。它们需要显式地打开和关闭。

Dispose 是释放这些资源的常用方式。使用 using 关键字可以很好地帮助实现这一点。

如果你必须释放字符串和整数,你的代码将变得非常复杂。


0

Dispose方法对于那些在其他对象中放置“钩子”(例如事件处理程序)的对象也是必要的。例如,如果一个对象订阅另一个对象的更改通知,则需要让该其他对象知道何时不再发送此类通知。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接