1. ホーム
  2. c#

[解決済み] 多値辞書

2023-05-27 02:17:39

質問

c#で多値辞書を作成するにはどうしたらよいでしょうか?

例えば Dictionary<T,T,T> ここで、最初のTがキーで、他の2つが値です。

ということで、これは可能でしょう。 Dictionary<int,object,double>

ありがとうございます。

どのように解決するのですか?

単に Pair<TFirst, TSecond> 型を作成し、それを値として使用します。

の中に一つの例があります。 C# in Depthのソースコード . 簡単のためにここに再現されています。

using System;
using System.Collections.Generic;

public sealed class Pair<TFirst, TSecond>
    : IEquatable<Pair<TFirst, TSecond>>
{
    private readonly TFirst first;
    private readonly TSecond second;

    public Pair(TFirst first, TSecond second)
    {
        this.first = first;
        this.second = second;
    }

    public TFirst First
    {
        get { return first; }
    }

    public TSecond Second
    {
        get { return second; }
    }

    public bool Equals(Pair<TFirst, TSecond> other)
    {
        if (other == null)
        {
            return false;
        }
        return EqualityComparer<TFirst>.Default.Equals(this.First, other.First) &&
               EqualityComparer<TSecond>.Default.Equals(this.Second, other.Second);
    }

    public override bool Equals(object o)
    {
        return Equals(o as Pair<TFirst, TSecond>);
    }

    public override int GetHashCode()
    {
        return EqualityComparer<TFirst>.Default.GetHashCode(first) * 37 +
               EqualityComparer<TSecond>.Default.GetHashCode(second);
    }
}