[解決済み] .NETで使用後にオブジェクトをNull/Nothingに設定する方法
質問
すべてのオブジェクトを
null
(
Nothing
VB.NETの場合)を一旦終了させるのですか?
を実装したオブジェクトのインスタンスは、.NETではディスポーザブルにすることが必須であると理解しています。
IDisposable
インターフェイスを使用して、リソースを解放することができます。
isDisposed
プロパティを使用することができます。
また、オブジェクトがスコープ外になると、ガベージコレクタの次のパスのために収集のためにマークされることも知っています(ただし、これには時間がかかる場合があります)。
これを踏まえて
null
また、悪い副作用はありますか?
MSDN の記事では、例でこのようなことをすることはありませんし、現在、私はこのようなことをすることができません。 弊害はありますか?しかし、私は様々な意見に出くわしたので、どんなコメントでも役に立ちます。
どのように解決するのですか?
Karlの言う通り、使用後にオブジェクトをnullに設定する必要はありません。もしオブジェクトが
IDisposable
を呼び出すようにすればよい。
IDisposable.Dispose()
そのオブジェクトを使い終わったとき、(
try
..
finally
または
using()
ブロック)。しかし、たとえあなたが
Dispose()
オブジェクトのファイナライザーメソッドは
Dispose()
を使用します。
これは良い治療法だと思いました。
そしてこれ
GCとその管理戦略を推測しようとすることに意味はありません。なぜなら、GCはセルフ・チューニングが可能で不透明だからです。Dot Net RocksでJeffrey Richterと内部構造について良い議論がありました。 ジェフリー・リヒターによるWindowsメモリモデルの解説 と リチャーズの本 C#によるCLR 第20章に素晴らしい解説があります。
関連
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み] JavaScriptでオブジェクトを削除する
-
[解決済み】オブジェクトを破棄してnullにする必要があるのか?
-
[解決済み] IDisposableが全クラスに広がるのを防ぐには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】C#で四捨五入する方法
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】Nullableオブジェクトは値を持たなければならない?