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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
-
4
C#で構造体の配列を持った構造体を使いたいのですが
C言語・C++・C#
-
5
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
6
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
7
メッセージボックスを大きくする方法
Visual Basic(VBA)
-
8
関数内の変数に<summary>コメントを付けたい
C言語・C++・C#
-
9
C# dataGridViewの値だけクリア
C言語・C++・C#
-
10
C#でbyte配列から画像を表示させたい
C言語・C++・C#
-
11
C# Listを使わずに2次元配列の動的確保をしたいです。
C言語・C++・C#
-
12
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
13
C#でフォームのオブジェクト名を変数名で指定
C言語・C++・C#
-
14
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
15
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
16
C# GetFilesで複数のファイルの種類を開きたい。
その他(プログラミング・Web制作)
-
17
ボタンクリックイベント 重複防止について
C言語・C++・C#
-
18
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
19
2の補数を計算するプログラム
C言語・C++・C#
-
20
C#のクラスで値渡しをする
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
VB.NET getとsetの概念がわかり...
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
フォームの存在をチェックする方法
-
文字列を日付に変換でParseExce...
-
他のファイルの変数参照
-
C#の構造体の開放のしかた
-
VB6.0で、DLLを動的に参照したい
-
c++の課題で クラスのオブジェ...
-
エクセル(複数インスタンス)...
-
C#「オブジェクト参照が必要で...
-
C#において、同じインスタンス...
-
vb.netでFAXを送信する方法
-
Delphiでインスタンスが作成さ...
-
String a = "a"; と String b =...
-
SerialPort処理でInvokeメソッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
エクセル(複数インスタンス)...
-
フォームの存在をチェックする方法
-
VB6.0で、DLLを動的に参照したい
-
String a = "a"; と String b =...
-
C#「オブジェクト参照が必要で...
-
newしないインスタンス?実体化...
-
「インスタンス」の意味をわか...
-
SetWindowsHookExで質問
-
フィールドでのnewとコンストラ...
おすすめ情報