C# 数据收集,每个条目有3个元素

C# 数据收集,每个条目有3个元素,c#,collections,C#,Collections,在.net framework中是否有一个数据集合(理想情况下是在集合.generic中),它可以处理三个不同的对象(比如int、string和float),在给定其中一个元素的情况下,可以访问其他两个元素(假设每个对象都是唯一的) 我不知道这是否存在,甚至是否可以创建,但理想情况下,它的工作原理类似于字典,但本质上是集合一种可以像集合[key]那样使用的安排。第三个=数据 正如我所说,我不知道这种安排是否存在;如果存在,请你为我指出正确的方向,如果没有,请你告诉我如何实现这一点 提前感谢。与您

在.net framework中是否有一个数据集合(理想情况下是在
集合.generic
中),它可以处理三个不同的对象(比如
int
string
float
),在给定其中一个元素的情况下,可以访问其他两个元素(假设每个对象都是唯一的)

我不知道这是否存在,甚至是否可以创建,但理想情况下,它的工作原理类似于
字典
,但本质上是
集合
一种可以像
集合[key]那样使用的安排。第三个=数据

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


提前感谢。

与您要查找的内容最接近的数据结构是
列表。
。您可以轻松使用linq搜索与这三个部分中任何一个的条件匹配的对象

但是,创建一个表示元素的自定义类型并不是很大的工作量:

public class Element 
{
    public int IntValue {get; set;}
    public string StringValue {get; set;}
    public float FloatValue {get; set;}
}
多键词典也不会太难——只要覆盖每种类型的索引器就行了。请注意,这三种类型都必须是不同的,否则会出现编译器错误,因为编译器不知道要绑定到哪个索引器

优点是您可以为每个值使用适当的名称,
int
值代表什么?这是自定义类相对于
Tuple
的一大优点,即上下文


我还要指出,“平等”对于
float
值可能会很棘手。两个看似相等的浮点值实际上可能会略有不同。浮点值通常会在指定的公差范围内进行比较。因此,它们通常会为索引结构(如
字典

最接近的数据结构)生成较差的键开箱即用,您要查找的是
列表
。您可以轻松使用linq搜索与这三个部分中任何一个的条件匹配的对象

但是,创建一个表示元素的自定义类型并不是很大的工作量:

public class Element 
{
    public int IntValue {get; set;}
    public string StringValue {get; set;}
    public float FloatValue {get; set;}
}
多键词典也不会太难——只要覆盖每种类型的索引器就行了。请注意,这三种类型都必须是不同的,否则会出现编译器错误,因为编译器不知道要绑定到哪个索引器

优点是您可以为每个值使用适当的名称,
int
值代表什么?这是自定义类相对于
Tuple
的一大优点,即上下文


我还要指出,“平等”对于
float
值可能会很棘手。两个看似相等的浮点值实际上可能会略有不同。浮点值通常会在指定的公差范围内进行比较。因此,它们通常会为索引结构(如
字典

等)生成糟糕的键。请看下面的帖子:L请看下面的帖子:回答得很好,谢谢。你能通过覆盖索引器来扩展你的意思吗?另外,不要太担心类型,给定的类型是示例,因为用例将是GameObject、Coord和Piece,它们是非标准的。我的意思是添加三个,这样你就可以做
collection[GameObject]
收藏[Coord]
收藏[Piece]
。回答得很好,谢谢。你能通过重写索引器进一步说明你的意思吗?另外,不要太担心类型,给定的类型是示例,因为用例将是GameObject、Coord和Piece,它们是非标准的。我的意思是添加三个,这样你就可以执行
集合[GameObject]
集合[Coord]
收藏[件]