• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NETのUsingキーワードの使い方)

VB.NETのUsingキーワードの使い方

このQ&Aのポイント
  • VB.NETのUsingキーワードを使ったファイルへのログ出力方法について質問します。Testクラスでボタンが押されたイベント処理の中で、TestFunction1とTestFunction2の中にもログを出力したい場合、StreamWriterオブジェクトをインスタンスフィールドに宣言し、Usingキーワードを使用してログを出力しています。
  • Usingキーワードを使用することで、ファイルが正常にクローズされることが保証されます。しかしこの方法に問題はありません。
  • 環境はVisual Studio 2005で、言語はVisual Basicです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#221368
noname#221368
回答No.1

 StreamWriterやGraphicsなども、Application終了後にガベージコレクターに引っ掛かり、最終的には .Net がメモリを解放するはずなのですが、これらはリソースの消費が激しいので、Application内で何回も作成されることを防ぐために、まめに Usingブロックか、Disposeメソッドでメモリを掃除しろ、というのがMSの推奨です。  _swは、使い切ってから End Using に達するので、問題ないように思えます。ただ蛇足ですが、_swがNothingでないかどうかだけで、所定の機能が果たせた、という判断は若干疑問です(大きなお世話ですね)。

capacity7
質問者

補足

ddtddtddtさん、早速の御回答ありがとうございます。 Usingの使い方として、 Private Sub TestFunction3()   Using sw As System.IO.StreamWriter = New System.IO.StreamWriter(filePath)     sw.WriteLine("テスト")   End Using End Sub というように、ローカルで宣言してその場で使い、メソッドをまたぐ様な使い方をしたことがなかったため、 質問内容のような書き方がありなのか??と思った次第です。 一応、質問内容のような場合とローカルのみで使う場合の両方のケースで、Usingブロックを抜けたあとの StreamWriterオブジェクトの様子をウォッチで確認したところ、両方のケースで同じように動いていました。 (と思われます) >ただ蛇足ですが、_swがNothingでないかどうかだけで、所定の機能が果たせた、という判断は若干疑問です。 これについてですが、いつもこのように処理してしまっているのですが・・・。私の勉強不足です。 勉強になりました。御回答ありがとうございました。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

swは生存期間がButton1_Click内なので、Button1_Clickの外の変数にするのは頂けない。 swはButton1_Clickのローカル変数として、他のメソッドには引数で渡せばよい。

capacity7
質問者

お礼

>swは生存期間がButton1_Click内なので、Button1_Clickの外の変数にするのは頂けない。 >swはButton1_Clickのローカル変数として、他のメソッドには引数で渡せばよい。 おっしゃるとおりです。御指摘ありがとうございました。

関連するQ&A