FileStream はマネージリソースとアンマネージリソースのどちらでしょうか？


[Disposeパターン](https://ja.stackoverflow.com/questions/15036/idisposable-%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E3%81%B9%E3%81%8D%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B)にてマネージリソースとアンマネージリソースの解放方法に違いがありますが、`FileStream`
はどちらとして扱うべきでしょうか？




マネージリソースは .NET のランタイム（CLR）によって管理（マネージ）されているリソースで、その解放処理は **CLRが責任を持ちます**
。また、その大半はGCの対象になっています。

一方アンマネージリソースはネイティブAPIで直接確保したリソースなどが該当します。これらの確保・解放にCLRは関与しないため、 **利用者が責任を持って**
解放する必要があります。

直接・間接的にアンマネージリソースを確保していようが、CLRの管理下にあるオブジェクトはマネージリソースと言えます。故に `FileStream`
オブジェクトはマネージリソースです。

* * *

マネージリソースはいつかは解放されるわけですが、メモリを大量に消費するリソースや、排他的に確保されるリソースなど、自動的な解放を待っていられない場合があります。そのような場合に手動で解放するのが
`IDisposable.Dispose()` です。

なのでこれが呼び出された場合には、そのオブジェクトが保持するアンマネージリソースのみならず、メモリを大きく消費するマネージリソースや、
`IDisposable` オブジェクトをすぐに解放する必要があります。これが Dispose パターンの `Dispose(bool)`
内で行うマネージオブジェクトの解放です。

  * [Dispose Pattern - MSDN Library](https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/implementing-dispose)
  * [CLRから見たリソースについて - 荒井省三のBlog - Site Home - MSDN Blogs](https://web.archive.org/web/20140418052138/http://blogs.msdn.com/b/shozoa/archive/2010/09/08/about-resources-on-clr.aspx)




マネージリソースは .NET のランタイム（CLR）によって管理（マネージ）されているリソースで、その解放処理は **CLRが責任を持ちます**
。また、その大半はGCの対象になっています。

一方アンマネージリソースはネイティブAPIで直接確保したリソースなどが該当します。これらの確保・解放にCLRは関与しないため、 **利用者が責任を持って**
解放する必要があります。

直接・間接的にアンマネージリソースを確保していようが、CLRの管理下にあるオブジェクトはマネージリソースと言えます。故に `FileStream`
オブジェクトはマネージリソースです。

* * *

マネージリソースはいつかは解放されるわけですが、メモリを大量に消費するリソースや、排他的に確保されるリソースなど、自動的な解放を待っていられない場合があります。そのような場合に手動で解放するのが
`IDisposable.Dispose()` です。

なのでこれが呼び出された場合には、そのオブジェクトが保持するアンマネージリソースのみならず、メモリを大きく消費するマネージリソースや、
`IDisposable` オブジェクトをすぐに解放する必要があります。これが Dispose パターンの `Dispose(bool)`
内で行うマネージオブジェクトの解放です。

  * [Dispose Pattern - MSDN Library](https://docs.microsoft.com/ja-jp/dotnet/standard/garbage-collection/implementing-dispose)
  * [CLRから見たリソースについて - 荒井省三のBlog - Site Home - MSDN Blogs](https://web.archive.org/web/20140418052138/http://blogs.msdn.com/b/shozoa/archive/2010/09/08/about-resources-on-clr.aspx)

