想了解StreamWriter源代碼的哪一部分是非託管代碼。已經通過http://referencesource.microsoft.com/網站的代碼。任何人都可以解釋爲什麼StreamWriter是非託管資源。
但它似乎是複雜的代碼來理解,源代碼中有很好的評論。但仍然有難以理解的地方,可能是我的知識不達標。但是,如果有人有任何博客或文章可以回答這個問題。這將會非常棒 !!!
想了解StreamWriter源代碼的哪一部分是非託管代碼。已經通過http://referencesource.microsoft.com/網站的代碼。任何人都可以解釋爲什麼StreamWriter是非託管資源。
但它似乎是複雜的代碼來理解,源代碼中有很好的評論。但仍然有難以理解的地方,可能是我的知識不達標。但是,如果有人有任何博客或文章可以回答這個問題。這將會非常棒 !!!
StreamWriter
不是一個unmanged資源,它是一個.NET類,它是100%管理的。
另一種完全不同的是,StreamWriter
可能會在內部使用非託管資源,或擁有一個IDisposable
對象,反過來可能使用的非託管資源,或僅僅簡單地擴展實現IDisposable
類。
後兩個是爲什麼StreamWriter
實現IDisposable
的原因,但要注意,實施IDisposable
不不一定意味着類使用直接或間接的非託管資源。
在StreamWriter
的特殊情況下,顯然它可能會間接消耗無法使用的資源;基礎流(IDisposable
實例字段Stream stream
)可能是FileStream
,它顯然會消耗非託管資源(例如HD中的文件)。但是它也很有可能基礎流不使用任何非託管資源,但正如Colin Mackay在下面的評論中正確指出的那樣,所有流必須實現抽象類Stream
提供的一致接口。
StreamWriter
是託管的,但是這是一個慣例,即釋放.NET Stream對象將始終處理任何基礎流。流通常被構造爲其他流的容器或包裝。例如,StreamWriter
可能是FileStream
的包裝(例如,當您使用System.IO.File.CreateText
創建StreamWriter
時)。由於FileStream
使用受管資源,並且不一定有直接引用,所以能夠通過在StreamWriter
上調用Dispose()來處置它很重要。
A FileStream
包含OS級文件句柄形式的管理資源。
你是什麼意思「StreamWriter源代碼是非託管代碼」?你問爲什麼它是一次性的? – stuartd
是@stuartd !!!。 – sameer
僅僅因爲一個類型實現了'IDisposable'並不意味着**必須**使用非託管資源。 – user1620220