
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
C#でbyte配列から画像を表示させたい
C言語・C++・C#
-
5
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
6
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
7
.NETアプリを作ったときの .manifest ファイルって必要なの
C言語・C++・C#
-
8
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
9
C# ReadOnlyのTextBoxで
C言語・C++・C#
-
10
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
11
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
12
Loadイベント中にほかのイベントを発生したくない
その他(プログラミング・Web制作)
-
13
C#で、ある条件でFormが自動で閉じるプログラム
C言語・C++・C#
-
14
C# のインスタンスの破棄
C言語・C++・C#
-
15
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
16
C#で構造体の配列を持った構造体を使いたいのですが
C言語・C++・C#
-
17
変数名の付け方
Java
-
18
C# Process.Startメソッドで複数引数を渡したい
その他(プログラミング・Web制作)
-
19
C# クラスのインスタンスについて
その他(プログラミング・Web制作)
-
20
C#にて別クラスの関数を使いたい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
変数名の付け方
-
生成したインスタンスを削除す...
-
複数の変数を宣言する時、同時...
-
オブジェクト参照がオブジェク...
-
[Visual C#] 優先される処理に...
-
フォームの存在をチェックする方法
-
newしないインスタンス?実体化...
-
「インスタンス」の意味をわか...
-
C#において、同じインスタンス...
-
VB.NET getとsetの概念がわかり...
-
非staticフィールドを参照でき...
-
String a = "a"; と String b =...
-
javaのクラスの作り方、エラー...
-
VB6.0で、DLLを動的に参照したい
-
大量のデータとインスタンスの...
-
initialize.apply(this,arg
-
クラス型がインスタンス化され...
-
SAPでいう「インスタンス」って...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
C# インスタンスの破棄
-
C#において、同じインスタンス...
-
オブジェクト参照がオブジェク...
-
生成したインスタンスを削除す...
-
VB.NET getとsetの概念がわかり...
-
javaのクラスの作り方、エラー...
-
変数の参照でエラーが出てしま...
-
「インスタンス」の意味をわか...
-
インスタンスを同じ名前で作成...
-
newしないインスタンス?実体化...
-
フォームの存在をチェックする方法
-
String a = "a"; と String b =...
-
C#のメモリ解放についてご教授...
-
vb.netでFAXを送信する方法
-
他のファイルの変数参照
-
Delphiでインスタンスが作成さ...
おすすめ情報