【发布时间】:2020-07-24 10:37:13
【问题描述】:
我对 C# 比较陌生。我需要能够创建一个包含两种不同类型的多维数组,array[int, double]。我知道数组没有这种能力,我被告知作为一种解决方法我应该使用结构,但我不知道如何实现它。
我有一个数组,其中包含 int 值,这些值指定数据在图表上每个图的交叉位置...
int[] barHits = { Yminus7Hit, Yminus6Hit, Yminus5Hit, Yminus4Hit, Yminus3Hit, etc.... }
还有另一个数组,指定绘图本身的 Y 值...
double[] array = {lower6, lower5, lower4, lower3, lower2, etc...
我需要将它们组合在一起,以便我可以引用第一个数组中最大(最新)的 int 值及其在第二个数组中对应的 double 值。
struct coordinates
{
int x;
double y;
}
过去几个小时我一直在网上阅读这方面的内容,但老实说,微软文档本身的编写感觉就像我已经是一名巫师程序员一样。
有没有办法可以使用上述结构来实现我的目标?结构甚至是实现我目标的正确工具吗?
抱歉,我的查询非常笼统,就像我说的那样,我是编程新手。感谢大家提供的任何帮助。
【问题讨论】:
-
我不确定我是否完全理解您所期望的结构,但您可以使用
Tuple、ValueTuple或KeyValuePair的数组/列表。 -
如果 barHits 中的值与数组中的值相关联,您可能需要查看 C# 字典 docs.microsoft.com/en-us/dotnet/api/…。我不确定这是否是您正在寻找但可能有效的解决方案?
-
我确实研究过使用字典,但是我需要对信息进行排序以获得最大的 int 值,并且字典无法排序,所以我需要将其转换为列表。这一切都编译好了,但是当我运行它时,它失败了,并告诉我密钥已经被赋予了一个值。 barHits 中的值一直在变化,双精度值也是如此。这就是问题所在吗?
-
@lunardiplomacy 为什么需要在最大的int之后对字典进行排序?如果它是最大值,您不能只遍历字典并将变量设置为
largestInt。这样你就可以遍历字典并找到最大的整数。我不确定更改键的用途是什么,但更改值应该可以作为myDictionary[myKey] = myNewValue;。 -
您可以使用SortedDictionary<TKey,TValue> Class。你说“我知道数组没有这个能力”,但是数组的元素类型可以是任何东西。不要混淆元素类型和始终为
int的索引类型。如果您的 int 比较小,您甚至可以将 int 作为索引,将 double 作为元素类型。
标签: c# arrays struct coordinates