質問

の違いは何ですか次のつのスニペットのコード:

using (Object o = new Object())
{
    // Do something
}

{
    Object o = new Object();
    // Do something
}

私は使い始めました using 多くのがんがどのように実際に効果と比較してスコーピングオブジェクト。

編集: 有豆知識から:

Jon Skeet:

ことに注意していばあいつなみはっせいごみ収集せます。ゴミの収集と迅速な資源をクリーンアップはやや直交す

まEddinsコメント:

なおクラスを実装すIDisposableインタフェース、Dispose()関数を使用ください。

役に立ちましたか?

解決

最初のスニペット呼 Dispose 末のブロックできるだけいるタイプの実施 IDisposable, では基本的に通話 Dispose にfinallyブロックでも利用できるタイプが必要な資源の清掃など

using (TextReader reader = File.OpenText("test.txt"))
{
    // Use reader to read the file
}
// reader will be disposed, so file handle released

ことに注意してい ない 力にゴせます。ゴミの収集と迅速な資源をクリーンアップはやや直交す

原則的には個人契約の場合は、ごを使用する必要があります using 書くを実装する IDisposable るコードブロックは責任を負(清掃).

他のヒント

using のオブジェクトを返し処理のオブジェクトでの括弧を実施IDisposable).のオブジェクトを返し処理も例外である。お持ちでないためには、GCいので時間を制御します。

編集:の点については、スコーピング:

  • すな制御処理のオブジェクト
  • 場合でも呼び出すとよいでしょう処理の範囲でない例外で安全に

ただ、文字通りのサ---

using (FileStream fileStream = new FileStream("log.txt", FileMode.OpenCreate))
{
  //stuff with file stream
}

と同じです...

{
  FileStream fileStream = new FileStream("log.txt", FileMode.OpenCreate);

  try
  {
    //stuff with filestream
  }
  finally
  {
    if (fileStream != null)
      ((IDisposable)fileStream).Dispose();
  }
}

場として

{
  FileStream fileStream = new FileStream("log.txt", FileMode.OpenCreate);
  fileStream.Dispose();
}

はしています。

マニュアルを参照してくださいに関する IDisposable と算定の資源解放.

簡単に言うと、末 using{} ブロックできる 確実に 廃棄は、割り当てられた資源(例えばファイルの扱うデータベース接続など)

using だけで実装のIDisposableインターフェイス、電話の処理方法末ます。

のためのたっぷりの荒議論を適切に廃棄物がたっぷりのその他のスレッド)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top