想要了解StreamWriter源代码的哪些部分是非托管代码。已经浏览了http://referencesource.microsoft.com/网站中的代码。
但似乎要理解复杂的代码,源代码中有很好的注释。但是仍然很难理解,可能是我的知识达不到那个标志。但是,如果有人有任何博客或文章可以回答这个问题。会很棒!!!
答案 0 :(得分:2)
StreamWriter
不是一个无人管理的资源,它是一个.NET类,它是100%管理的。
另一个完全不同的是StreamWriter
可能在内部使用非托管资源或拥有一个IDisposable
对象,而该对象又可能使用非托管资源,或者只是扩展实现IDisposable
的类。
后两者是StreamWriter
实现IDisposable
的原因,但要注意,实现IDisposable
不必然意味着该类直接或间接使用非托管资源。
在StreamWriter
的特定情况下,很明显它可能会间接消耗无人资源;基础流(IDisposable
实例字段Stream stream
)可能是FileStream
,显然会消耗非托管资源(例如,HD中的文件)。但是也很可能底层流不使用任何非托管资源,但正如Colin Mackay在下面的注释中正确指出的那样,所有流都必须实现抽象类Stream
提供的一致接口。 / p>
答案 1 :(得分:0)
StreamWriter
,但是处理.NET Stream对象的约定总是处理任何底层流。流通常被构造为围绕其他流的容器或包装器。例如,FileStream
可能是StreamWriter
的包装(例如,当您使用System.IO.File.CreateText
创建FileStream
时)。由于StreamWriter
使用托管资源,并且您不一定直接引用它,因此能够通过调用FileStream
上的Dispose()来处置它非常重要。
if now-timedelta(hours=24) <= set_date <= now:
... #date less than 24 hours in the past
包含操作系统级文件句柄形式的托管资源。