FrameworkC#のDictionaryのTKeyにオブジェクトを指定した場合、参照アドレスが同じであれば同じオブジェクトと判断されます。なる場合、同じキーと認識されることを表します。今回は、自作のクラスの内容が同じ場合同じキーと認識される方法を紹介します。標準的な動きの確認まず、既存の動作の確認です。以下のクラスを用意してDictionaryのキーとして使用します。}}次に、Dictionaryを作成します。};}正直こうなると使えないケースが多いです。入力されたオブジェクトをテーブルの中から探す場合、中身を見てから同じか判断を外ですると検索量がO(n)になりデータ構造がDictionaryじゃなくてもよいという話になってしまいます。自作クラスの内容で判断するように修正するキーが内容で同じか判定するための修正方法ですが、まず前提として、C#のDictionaryのオブジェクトの同一性判定は以下の条件に従います。なるしたがって、自分で上記メソッドをオーバーラーイドし、オブジェクトの中身が同値であれば同じ値を返すように修正します。}}次にテーブルへ値を設定します。この場合2つ目でエラーになります。'同一のキーを含む項目が既に追加されています。判定が異なってしまいます。C#では大抵の場合同じ動きが望まれるので、演算子も同じ結果を得るため以下のように演算子をオーバーロードします。}}動作確認のコードは以下の通りです。内容を見て同じか判断されます。'同一のキーを含む項目が既に追加されています。"item3");}上記オブジェクトもDictionaryで使用すると内容で判断されます。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。Core3.xとUnityでAES暗号化を利用するC#の標準機能でデータを圧縮・展開するC#で属性を利用して処理に制約の説明を追加するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。