- PR -

ジェネリックなOrderedDictionary

1
投稿者投稿内容
h.h
会議室デビュー日: 2006/02/09
投稿数: 5
投稿日時: 2006-03-24 15:46
OrderedDictionaryというクラスがありますが、
このクラスのジェネリックなタイプというのはなぜないのでしょうか。

ジェネリックなクラスにはSortedList,SortedDictionaryなど一通りのクラスが
そろっているにもかかわらずOrderedDictionaryのジェネリックなタイプがないのが不思議です。

キー・値ペアを順位を維持しながら保持できるOrderedDictionaryは有用だと思いますが、これのジェネリックなタイプがあったらもっと便利だと思うのですが。。。

もし見当違いな疑問でしたら恐縮です。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2006-03-24 16:21
南部です。

これで済みそうな、、、
コード:
public class OrderedComparer<TKey> : IComparer<TKey>
{
  public int Compare(TKey x, TKey y)
  {
    return 1;
  }
}

nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2006-03-24 16:32
やっぱダメですね。
格納時だけじゃないや。
ごめんなさい。

#編集
イコールの時、0返すの忘れてただけか、、、
コード:

public class OrderedComparer<TKey> : IComparer<TKey>
{
public int Compare(TKey x, TKey y)
{
return x.Equals(y) ? 0 : 1;
}
}



[ メッセージ編集済み 編集者: nanbu 編集日時 2006-03-24 16:47 ]
h.h
会議室デビュー日: 2006/02/09
投稿数: 5
投稿日時: 2006-03-24 17:19
南部 様、ありがとうございます。

すみません、知識が浅い物で、どうにか理解したところによると、
SortedListを使用して、IComparerを並べ替えられない物にすればOKということでしょうか。

IComparerでイコールでないときに1を返すと、Addした順番が保たれるのでしょうか?
この場合、要素をInsertすることが出来なくないでしょうか?

また、見当違いなことを言ってそうですが、教えていただけたら幸いです。
nanbu
大ベテラン
会議室デビュー日: 2004/08/19
投稿数: 178
投稿日時: 2006-03-24 18:16
引用:

h.hさんの書き込み (2006-03-24 17:19) より:
南部 様、ありがとうございます。

すみません、知識が浅い物で、どうにか理解したところによると、
SortedListを使用して、IComparerを並べ替えられない物にすればOKということでしょうか。

IComparerでイコールでないときに1を返すと、Addした順番が保たれるのでしょうか?
この場合、要素をInsertすることが出来なくないでしょうか?

また、見当違いなことを言ってそうですが、教えていただけたら幸いです。


南部です。

見当違いじゃないです。

入れた順番を保持したい時、ありますよね、たしかに。
簡単にいくかなぁっと思ったけど、
無理そうですね。
こちらの検討不足です。

自分で実装、、ですかね、、。
h.h
会議室デビュー日: 2006/02/09
投稿数: 5
投稿日時: 2006-03-24 18:41
ありがとうございます。

クラスライブラリを見ていて、なぜこれだけジェネリックがないのかなあと思い、
もしかして、他のクラスにその機能があるからなのかなと、リファレンスを探していました。
とくかく、ないと言うことがはっきりしただけでもだいぶすっきりしました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)