C#_using( )とは

言われるままに使っていたので。調べた。名前空間の using とは別。

 

using のスコープを抜けると自動的に確保したリソースを解放してくれる

-- もう少し詳しく ↓ --

・using でインスタンス化されたオブジェクトは、
using スコープを抜けると解放される( 自動で Disposeしてくれる )。

・また、ベタでDispose( ) を書く際のエラー回避( 例外) も備えている
Dispose( ) をするインスタンスがNull か否か判定する必要があるが、
これも using が対応してくれている。参照先のURL にコードが詳しく載っている。

 

リソースを解放しないと、何が困るのか。

例えば、プログラムで test.xlsx を扱ったとする。
しばらく test.xlsx をプログラム上で参照しなければ、
ガーベッジコレクタが「そのうち」破棄する。

「そのうち」とはいつか。
ガーベッジコレクタは頻繁に動かない。
メモリが足りなくなってきたら動くとうい感じ。

つまり、 test.xlsx を編集しようとしてもプログラム上で
解放されていないので使えない。いつ使えるかはガーベッジコレクタ次第
よって、使い終わったらメモリを開放する Dispose( ) を呼ぶ必要がある

 

Garbage Collector ( ゴミ拾い ):
プログラムが動的に確保したメモリ領域のうち、
不要になった領域を自動的に解放する機能。

 

こちらから参照。
https://urashita.com/archives/1825
http://divakk.co.jp/aoyagi/csharp_tips_using.html
http://ufcpp.net/study/csharp/oo_dispose.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/027dispose/dispose.html

 

以上。