在c# VS2013中实现一个元组,每个元素与一个名称相关联

本文关键字:一个 元素 关联 VS2013 元组 实现 | 更新日期: 2023-09-27 18:08:58

我需要实现一个

       Dictionary<int, Tuple<string, double, double>>

字典保存

       Dictionary<3, Tuple<"id1", 65.97, 9.8>>

我需要为元组中的每个元素指定一个名称。例如

       Dictionary<3, Tuple<id:id1, value1:65.97, value2:9.8>>

我需要在元组中搜索元素的名称以获得其值。

任何帮助都会很感激。

在c# VS2013中实现一个元组,每个元素与一个名称相关联

继续:

public sealed class MyTuple : IEquatable<MyTuple>
{
    private readonly string _Id; 
    private readonly double _Value1; 
    private readonly double _Value2;
    public string Id { get { return _Id; } } 
    public double Value1 { get { return _Value1; } } 
    public double Value2 { get { return _Value2; } }
    public MyTuple(string Id, double Value1, double Value2)
    {
        _Id = Id; 
        _Value1 = Value1; 
        _Value2 = Value2;    
    }
    public override bool Equals(object obj)
    {
        if (obj is MyTuple)
                return Equals((MyTuple)obj);
        return false;
    }
    public bool Equals(MyTuple obj)
    {
        if (obj == null) return false;
        if (!EqualityComparer<string>.Default.Equals(_Id, obj._Id)) return false; 
        if (!EqualityComparer<double>.Default.Equals(_Value1, obj._Value1)) return false; 
        if (!EqualityComparer<double>.Default.Equals(_Value2, obj._Value2)) return false;    
        return true;
    }
    public override int GetHashCode()
    {
        int hash = 0;
        hash ^= EqualityComparer<string>.Default.GetHashCode(_Id); 
        hash ^= EqualityComparer<double>.Default.GetHashCode(_Value1); 
        hash ^= EqualityComparer<double>.Default.GetHashCode(_Value2);
        return hash;
    }
    public override string ToString()
    {
        return String.Format("{{ Id = {0}, Value1 = {1}, Value2 = {2} }}", _Id, _Value1, _Value2);
    }
}

定义一个class并使用它代替元组

public class ObjectName {
  public string id { get; set; }
  public double value1 { get; set; }
  public double value2 { get; set; }
  public ObjectName(string id, double val1, double val2) {
    this.id = id;
    this.value1 = val1;
    this.value2 = val2;
  }
}

然后在你的代码中:

Dictionary<3, new ObjectName("id1", 65.97, 9.8 }>