
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も見ています
-
C#において、同じインスタンスを何度もnewしてよいでしょうか。
その他(プログラミング・Web制作)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
C# 配列の変数宣言について。
C言語・C++・C#
-
-
4
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
5
C#でbyte配列から画像を表示させたい
C言語・C++・C#
-
6
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
7
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
8
変数名の付け方
Java
-
9
フルパスから最後のディレクトリ名を取得したい。
Visual Basic(VBA)
-
10
C#の構造体の開放のしかた
C言語・C++・C#
-
11
C#にて別クラスの関数を使いたい
C言語・C++・C#
-
12
.NETアプリを作ったときの .manifest ファイルって必要なの
C言語・C++・C#
-
13
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
14
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
15
C#で起動時のフォームを非表示にした後、Showで表示したいのですが
その他(プログラミング・Web制作)
-
16
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
17
WPFでの時刻入力コントロールについて
C言語・C++・C#
-
18
win10で、正確な待ち時間の作り方
C言語・C++・C#
-
19
API、OCX、DLLって何でしょう?
Visual Basic(VBA)
-
20
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
private static という変数の修飾
-
複数の変数を宣言する時、同時...
-
C# インスタンスの破棄
-
オブジェクト参照がオブジェク...
-
変数名の付け方
-
生成したインスタンスを削除す...
-
C#において、同じインスタンス...
-
インタフェースのメソッド
-
VB.NET getとsetの概念がわかり...
-
javaのクラスの作り方、エラー...
-
フォームの存在をチェックする方法
-
Javaプログラムでプロキシを経...
-
クラスのインスタンス名をクラ...
-
セッションについて jspサーブ...
-
オブジェクトの消滅と関数の戻...
-
VC++からのocxの使用方法
-
マルチスレッド間でデータ交換...
-
メソッドの引数としてのthisの意味
-
static 参照するには??
-
C++で継承を学習するのに適した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オブジェクト参照がオブジェク...
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
VB.NET getとsetの概念がわかり...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
javaのクラスの作り方、エラー...
-
クラスのインスタンス名をクラ...
-
C#の構造体の開放のしかた
-
エクセル(複数インスタンス)...
-
VB6.0で、DLLを動的に参照したい
-
C#「オブジェクト参照が必要で...
-
vb.netでFAXを送信する方法
おすすめ情報