ホームページ > バックエンド開発 > C++ > C# でマルチキー辞書を実装するにはどうすればよいですか?

C# でマルチキー辞書を実装するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-08 19:26:42
オリジナル
411 人が閲覧しました

How to Implement a Multi-Key Dictionary in C#?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート