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