想了解 StreamWriter 源代码的哪一部分是非托管代码。已经浏览了http://referencesource.microsoft.com/网站中的代码。
不过好像代码比较复杂,源码里面有很好的注释。但仍然很难理解,可能是我的知识没有达到那个标准。但是,如果有人有任何博客或文章可以回答这个问题。这将会非常棒 !!!
想了解 StreamWriter 源代码的哪一部分是非托管代码。已经浏览了http://referencesource.microsoft.com/网站中的代码。
不过好像代码比较复杂,源码里面有很好的注释。但仍然很难理解,可能是我的知识没有达到那个标准。但是,如果有人有任何博客或文章可以回答这个问题。这将会非常棒 !!!
StreamWriter
不是非托管资源,它是一个 .NET 类,它是 100% 托管的。
另一个完全不同的事情是,它StreamWriter
可能在内部使用非托管资源或拥有一个IDisposable
对象,而该对象又可能使用非托管资源,或者只是扩展一个实现IDisposable
.
StreamWriter
后两者是实现的原因IDisposable
,但要注意,实现IDisposable
并不一定意味着该类直接或间接使用非托管资源。
在 的特定情况下StreamWriter
,很明显它可能会间接消耗未管理的资源;底层流(IDisposable
实例字段Stream stream
)可能是一个FileStream
显然消耗非托管资源(例如,您的 HD 中的文件)的流。但也很有可能底层流不使用任何非托管资源,但正如Colin Mackay在下面的评论中正确指出的那样,所有流都必须实现抽象类Stream
提供的一致接口。
StreamWriter
是托管的,但按照惯例,处置 .NET Stream 对象将始终处置任何底层流。流通常被构建为其他流周围的容器或包装器。例如, theStreamWriter
可能是 a 的包装器FileStream
(例如,当您创建StreamWriter
using时System.IO.File.CreateText
)。由于 aFileStream
使用托管资源,并且您不一定直接引用它,因此能够通过在StreamWriter
.
AFileStream
包含操作系统级文件句柄形式的托管资源。