C# のマルチキー辞書
C# 自体はマルチキー辞書のデータ構造をサポートしていません。ただし、一部のオープン ソース ライブラリはこの機能を提供します。
タプルベースの実装
一般的なアプローチは、タプルをキーとして使用することです。タプルは、それぞれが独自の型を持つ複数の値のコレクションを表すデータ構造です。たとえば、次のコードは 2 つのキー (文字列と整数) を含むタプルを定義します。
<code class="language-csharp">var tuple = (key1: "key1", key2: 1);</code>
<code class="language-csharp">var dictionary = new Dictionary<Tuple<string, int>, string>(); dictionary.Add(tuple, "value");</code>
構造ベースの実装
もう 1 つのオプションは、マルチキー値を表すカスタム構造を定義することです。次のコードは、2 つのフィールドを持つ構造体を定義します:
<code class="language-csharp">public struct Key { public string Key1 { get; set; } public int Key2 { get; set; } }</code>
<code class="language-csharp">var dictionary = new Dictionary<Key, string>(); dictionary.Add(new Key { Key1 = "key1", Key2 = 1 }, "value");</code>
値オブジェクトの実装
より洗練されたアプローチは、複数の値をカプセル化し、値のセマンティクスを強制するクラスを定義することです。このアプローチは、複数キーのデータを処理するための簡潔で保守しやすい方法を提供します。次のコードは、2 つのフィールドを持つ値オブジェクトを定義します:
<code class="language-csharp">public class ValueObject { public string Key1 { get; private set; } public int Key2 { get; private set; } public ValueObject(string key1, int key2) { Key1 = key1; Key2 = key2; } public override bool Equals(object obj) { return obj is ValueObject other && other.Key1 == Key1 && other.Key2 == Key2; } public override int GetHashCode() { return HashCode.Combine(Key1, Key2); } }</code>
以上がC# でマルチキー辞書を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。