No.1ベストアンサー
- 回答日時:
結論から言うと、どちらでも良いです。
できれば生成から破棄まで考えて開発できると良いですね。
ガベージコレクションが実行されることで自動開放されますから、
一切.close()や.dispose()を使わなかったとしてもプログラムが
不正終了してしまう事はほとんどありません。
実際の開発では使わなくなったものを使わなくなった時点で
明示的に破棄することが多いです。正確には明示的に破棄するもの、
明示的に破棄しないもの、の2種類に分類しています。
例えばファイルを読み書きするストリーム系のオブジェクトや
データベースとのコネクションなどです。これは開発会社や
開発チーム、案件によって若干違っていて、徹底するところや
適当なところもあります。個人的には徹底したい派ですが。。。
ガベージコレクションが発生するとプログラムの実行動作が
遅くなり、また瞬間的に大きな負担がかかることがあります。
そのため全てをガベージコレクタに任せるのではなく、
明示的に開放できるもの、メモリを大量に消費するものは
その都度、適切に開放していくことで処理効率が良くなります。
プログラミング関連の調べ物で、サンプルソース等を見ることが
あるかと思います。この時サンプルで明示的に開放していたら、
それは明示的に開放したほうが良いもの、と思いましょう。
これだけでもステップアップになりますね。
No.2
- 回答日時:
インスタンスの破棄は、変数に null を代入することで行います(もしくはロジックのスコープを抜ける時)。
Dispose について誤解している方が多いのですが、
Dispose は、あくまでインスタンスが内包している「メモリ以外の資源」を解放してもらうよう、そのインスタンスに依頼するものです(Disposeを呼ばれた時の処理は、そのクラスの実装者が適切に行う必要があります)から、全く意味が異なります。
Dispose メソッド(IDisposable インタフェース)を持つクラスのオブジェクトは、使い終わったら Dispose を呼んでくれ、というのがルールになっていますので、呼びましょう。using 句を使うのが確実です。try 句の finally 内で Dispose しても構いません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 個人事業主・自営業・フリーランス インボイス制度は、クライアントごとに請求書を分ける事はできますか? 6 2023/04/03 14:22
- 労働相談 長文になりますが、わかる方教えてください。 先日、体調が悪く会社を欠勤しました。 会社から病院の領収 2 2022/07/27 23:26
- 労働相談 長文になりますが、わかる方教えてください。 先日、体調が悪く会社を欠勤しました。 会社から病院の領収 2 2022/07/27 23:30
- デスクトップパソコン Outlookのデータが勝手に復元された理由は? 1 2022/07/13 15:45
- Excel(エクセル) 別インスタンスのエクセルを制御したい 1 2023/05/10 02:03
- 事件・犯罪 虚偽申告とは 以下の問題で抵触する可能性はありますか? 実際に起きた事です。 男性A(彼氏)と女性B 2 2023/05/17 02:26
- FX・外国為替取引 MQL5にて謎のエラーが発生!だれか対処を教えてください! 1 2023/03/25 15:59
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- 宇宙科学・天文学・天気 銀河のハビタブルゾーンを確率的セルオートマトンという数値的にシミュレーションした結果、「群島」の様な 2 2023/06/06 23:10
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
CloseとDisposeの違い
Visual Basic(VBA)
-
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
-
4
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
5
C#で構造体の配列を持った構造体を使いたいのですが
C言語・C++・C#
-
6
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
7
メッセージボックスを大きくする方法
Visual Basic(VBA)
-
8
C# try-catch でcatchに飛ばす方法
C言語・C++・C#
-
9
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
10
変数名の付け方
Java
-
11
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
12
C#で角が丸いテキストボックス
その他(プログラミング・Web制作)
-
13
関数内の変数に<summary>コメントを付けたい
C言語・C++・C#
-
14
C#のメモリ解放についてご教授ください。 以下の例のAAAクラスで、CCCクラスのListを破棄およ
C言語・C++・C#
-
15
C# のインスタンスの破棄
C言語・C++・C#
-
16
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
17
UDP通信する時に、相手にどうやって自分のポート番号を教える?
Java
-
18
C# 配列の変数宣言について。
C言語・C++・C#
-
19
C# GetFilesで複数のファイルの種類を開きたい。
その他(プログラミング・Web制作)
-
20
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
エクセル(複数インスタンス)...
-
「インスタンス」の意味をわか...
-
生成したインスタンスを削除す...
-
VB.NET getとsetの概念がわかり...
-
VB6.0で、DLLを動的に参照したい
-
VC#での24ビットbmp形式での保...
-
マルチスレッド間でデータ交換...
-
フォームのCheck boxとOLEObjec...
-
SQLを連続発行する時の正しい(?...
-
変数の参照でエラーが出てしま...
-
文字列を日付に変換でParseExce...
-
ファイル読み込み/書き込み速度...
-
フォームの存在をチェックする方法
-
オブジェクト参照がオブジェク...
-
C# インスタンスの破棄
-
参照渡し
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
文字列を日付に変換でParseExce...
-
String a = "a"; と String b =...
-
「インスタンス」の意味をわか...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
SQLを連続発行する時の正しい(?...
-
javaのクラスの作り方、エラー...
-
オブジェクト参照がオブジェク...
-
他のファイルの変数参照
-
C#「オブジェクト参照が必要で...
-
エクセル(複数インスタンス)...
-
VB6.0で、DLLを動的に参照したい
おすすめ情報