中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

Dispose

http://blogs.wankuma.com/shuujin/archive/2007/02/01/60398.aspx

おいらはDisposeはNewとともにあるべきだと思っています。

C++出身者ってこともあるかもしれないけど、newしたものがdeleteするのは当たり前。

ただこれも現在流のコンテキスト重視の流れで行くとFactoryもまぁねぇってところ。

Factoryとインターフェイスでの抽象化はあまり混同しないほうがいいとおもいます。(たぶんコメントさんもわかってるとは思うけど)

それよりも、以下のヘルパをどうおもいますか。

XmlElement CreateElement(XmlDocument xd, string ElementName, string Value){
  XmlElement xe = xd.CreateElement(name);
  xe.Value = Value;
  return xe;
}

利用する側
RootElement.Append(CreateElement(xd, "youso", "atai"));

コンテキストからみるとすごくわかりやすいと思います。でもValueがnullの場合にはエレメントを追加しないとなったときには

XmlElement AppendElement(XmlDocument xd, XmlElement parent, string ElementName, string Value){
  if ( value != null ) {
    XmlElement xe = xd.CreateElement(name);
    xe.Value = Value;
    parent.Append(xe);
  }
}

利用する側
AppendElement(xd, RootElement, "youso", "atai"));

こんな感じに変化させなければいけないんです。

コンテキストを生かすといっても一筋縄ではいかない・・・

#なにもみずにイメージだけでコードしてるので間違ってても許してね。(^^

投稿日時 : 2007年2月1日 23:50

コメントを追加

# re: Dispose 2007/02/02 8:50 黒龍

C++の場合は参照じゃなくポインタが戻ればあ~deleteしなきゃな。みたいなことがわかると思うんですがC#ではわからないですよね。
ここにコメントしても仕方ないんですがcommand系がDispose持ってるのってConnectionと混同できる話なのかなぁ??

# re: Dispose 2007/02/02 9:39 渋木宏明(ひどり)

「newしたものがdeleteするのは当たり前」だと、GC の出る幕無しですね。

# re: Dispose 2007/02/04 0:07 渋木宏明(ひどり)

Command 系が Dispose() を備えているのは、Component 派生だからです。
アンマネージリソースを抱えた Command の実装ってのもちょっと考え難いし。

# re: Dispose 2007/04/02 8:59 Xenophon

Nice

# re: Dispose 2007/04/02 21:40 Fanos

interesting

タイトル
名前
URL
コメント