C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Dictionaryの自作Key重複について

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■88950 / inTopicNo.1)  Dictionaryの自作Key重複について
  
□投稿者/ にい (1回)-(2018/10/16(Tue) 19:40:48)

分類:[C#] 

初めまして。

C#でDictionaryを使用しているのですがKeyが自作で
public class Key
{
public string k1 { get; set; }
public string k2 { get; set; }
}

Dictionary<Key, int>となっています。

C++のSTL/MAPだとOperatorの定義でキーの重複条件を作れたのですがC#の場合ですと
どのような形でチェックできますか?
現状では dictionary[key] = xx; の書式でKeyが重複できてしまいます。
引用返信 編集キー/
■88951 / inTopicNo.2)  Re[1]: Dictionaryの自作Key重複について
□投稿者/ Hongliang (713回)-(2018/10/16(Tue) 19:50:47)
2018/10/17(Wed) 08:44:52 編集(投稿者)

KeyクラスにIEquatable<Key>を実装させます。
<追記>あと、GetHashCode()とEquals(Object)のオーバーライドもですね。</追記>

ところで、恐らくKeyの等価性の元となるであろうk1, k2が変更可能であれば、大変面倒なことになります。
// 登録した時は違うキーだったのにいつの間にか同じキーに!とか。
辞書のキーとする型の、等価性の元となる値については、変更不可とすることをお勧めします。
引用返信 編集キー/
■88952 / inTopicNo.3)  Re[2]: Dictionaryの自作Key重複について
□投稿者/ にい (2回)-(2018/10/17(Wed) 10:15:34)
Hongliang さん

無事に実装と動作確認終わりました。ありがとうございました
Keyのpublicについてはまた別途考慮いたします
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ