[csharpll:0326] Re: < 教 > リソース解放のタイミング

Subject:
[csharpll:0326] Re: < 教 > リソース解放のタイミング
From:
Shinichi Aoyagi <aoyagi@...>
Date:
Mon, 20 Mar 2006 17:45:16 +0900
X-Mailer:
Microsoft Outlook Express 6.00.2900.2670
Message-Id:
<3c4001c64bfa$9cbf5590$0201a8c0‐at‐divakk.co.jp>
References:
325
青柳です。

----- Original Message -----
From: "Takao Ono" <takao@...>
Sent: Monday, March 20, 2006 5:00 PM
Subject: [csharpll:0325] Re: < 教 > リソース解放のタイミング

> 私> う〜, わけわからん. なんでデストラクタと Dispose の両方があるんだ.
> shuji_ono> デストラクタ(というかファイナライザというか)は必ずしも呼び出されることが
> shuji_ono> 保障されてなかったよーな>C#
> 遅くとも GC のタイミングで必ず呼出されることが保証されてます.

GC が働く前にプロセスが終了してしまう場合などはファイナライザ
が呼び出されることは保証されていないはずです。

話が混じると激しくややこしくなるんですが(^^; GC によって呼び出
されるのはファイナライザです。
C# では 「C++ でのデストラクタの構文」 を使ってファイナライザを
定義できます。
   class Hoge() {
       public ~Hoge() { ... }    // これはファイナライザ
   }

C++/CLI の 「C++ でのデストラクタの構文」 は Dispose パターン
に従った Dispose メソッドやファイナライザを自動生成してくれるシン
タックスシュガーで、ファイナライザは !Hoge() という新しい構文で
定義します。
   class Hoge() {
       public ~Hoge() { ... }    // これは Dispose

       public !Hoge() { ... }    // これはファイナライザ
   }

--
青柳 臣一 (Shinichi Aoyagi)
 Microsoft MVP for Visual Developer - Visual C#  Oct 2005-Sept 2006
 株式会社ディーバ  DIVA Co.,LTD. (Osaka, Japan)

スレッド

Navigation

検索

[検索ヘルプ]

Maintener: Tietew <www.tietew.jp>
Powered by Ruby on Rails, Mongrel, PostgreSQL, and Hyper Estraier.
click here