每个条目包含3个元素的数据收集

时间:2016-03-29 12:46:58

标签: c# collections

.net框架中是否有数据集合(理想情况下在collections.generic中可以处理三个不同的对象(比如说intstringfloat)给定其中一个元素可以访问其他两个元素(假设每个对象都是唯一的)。

我不知道这是否会存在,或者即使它可以被创建,但理想情况下它可以与Dictionary<key,value>类似地工作,但实际上可能是Collection <key,key,key>类似的安排像Collection[key].third = data一样使用。

正如我所说,我不知道这种安排是否存在;如果确实如此,请你指点我正确的方向,如果没有,请你告诉我是否有任何想法如何实现。

提前致谢。

1 个答案:

答案 0 :(得分:4)

与您正在寻找的最接近的数据结构是List<Tuple<int, string, float>>。您可以轻松使用linq搜索符合三个部分中任何一个的标准的对象。

但是,创建表示元素的自定义类型并不是一项重要的工作:

public class Element 
{
    public int IntValue {get; set;}
    public string StringValue {get; set;}
    public float FloatValue {get; set;}
}

多键字典也不会非常困难 - 只需覆盖每种类型的索引器。请注意,所有三种类型必须是不同的,否则您将遇到编译器错误,因为编译器将不知道您绑定到哪个索引器。

优点是您可以为每个值使用适当的名称 - int值代表什么?自定义类相对于{{1>} 上下文,这是一个很大的优势。

我还要注意Tuple值的“相等”可能很棘手。 似乎相等的两个浮点值实际上可能会略有不同。通常通过查看指定容差的范围来比较浮点值。因此,他们通常会为索引结构化float制作糟糕的密钥。

相关问题