質問: c# インスタンスの破棄 c#でインスタンスの破棄を明示的に行いたいのですが、 実際の開発現場では、どのように行っているのでしょうか? 自分で調べると「ガベージコレクタ」が暗黙的に行っているようですが明示的には行わないのが普通なのでしょうか? もしくは、「dispose」を使用して明示的に行うのが普通なのでしょうか? 実際に開発されている方からすると簡単な事かもしれませんが教えて頂けると助かります。 以上ですが、よろしくお願いいたします。
回答: 結論から言うと、どちらでも良いです。 できれば生成から破棄まで考えて開発できると良いですね。 ガベージコレクションが実行されることで自動開放されますから、 一切.close()や.dispose()を使わなかったとしてもプログラムが 不正終了してしまう事はほとんどありません。 実際の開発では使わなくなったものを使わなくなった時点で 明示的に破棄することが多いです。正確には明示的に破棄するもの、 明示的に破棄しないもの、の2種類に分類しています。 例えばファイルを読み書きするストリーム系のオブジェクトや データベースとのコネクションなどです。これは開発会社や 開発チーム、案件によって若干違っていて、徹底するところや 適当なところもあります。個人的には徹底したい派ですが。。。 ガベージコレクションが発生するとプログラムの実行動作が 遅くなり、また瞬間的に大きな負担がかかることがあります。 そのため全てをガベージコレクタに任せるのではなく、 明示的に開放できるもの、メモリを大量に消費するものは その都度、適切に開放していくことで処理効率が良くなります。 プログラミング関連の調べ物で、サンプルソース等を見ることが あるかと思います。この時サンプルで明示的に開放していたら、 それは明示的に開放したほうが良いもの、と思いましょう。 これだけでもステップアップになりますね。