.net框架中是否有数据集合(理想情况下在collections.generic
中可以处理三个不同的对象(比如说int
,string
和float
)给定其中一个元素可以访问其他两个元素(假设每个对象都是唯一的)。
我不知道这是否会存在,或者即使它可以被创建,但理想情况下它可以与Dictionary<key,value>
类似地工作,但实际上可能是Collection <key,key,key>
类似的安排像Collection[key].third = data
一样使用。
正如我所说,我不知道这种安排是否存在;如果确实如此,请你指点我正确的方向,如果没有,请你告诉我是否有任何想法如何实现。
提前致谢。
答案 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
制作糟糕的密钥。