繁体   English   中英

与其他语言一样,使用C#编写二维数组

[英]2 dimensional array in C# like in other languages

我有这样的数据:

44 {5,8,0,0,2,5,9}
99 {9,9,9,9,5,5,1}
12 {0,0,9,5,1,7,1}

第一个数字就像主键,括号中的其他数字是它的值。

我想将上面的数据保存到这样的数组中:

int id = 0;
int ids[];
int data[][7];

ids[id] = 44;
data[ids[id]][0] = 5;
data[ids[id]][1] = 8;
data[ids[id]][2] = 0;
data[ids[id]][3] = 0;
data[ids[id]][4] = 2;
data[ids[id]][5] = 5;
data[ids[id]][6] = 9;
id++;
ids[id] = 99;
data[ids[id]][0] = 9;
data[ids[id]][1] = 9;
data[ids[id]][2] = 9;
data[ids[id]][3] = 9;
data[ids[id]][4] = 5;
data[ids[id]][5] = 5;
data[ids[id]][6] = 1;
id++;
ids[id] = 12;
data[ids[id]][0] = 0;
data[ids[id]][1] = 0;
data[ids[id]][2] = 9;
data[ids[id]][3] = 5;
data[ids[id]][4] = 1;
data[ids[id]][5] = 7;
data[ids[id]][6] = 1;
id++;

然后像这样访问它们:

Console.Write(""+data[44][0]);
output: 5

我希望你明白我的意思。 这是使用数组的非常基本的示例,我找不到在C#中使用数组的方法。 我该怎么办? 我已经阅读了msdn上的Arrays Tutorial,但是我什至没有找到如何创建一个数组的方法,该数组的第一维为动态(从0到无限大),第二维为静态(从0到6)。 有什么简单的解决方法吗? 谢谢。

Dictionary<int, int[]> data = new Dictionary<int, int[]>();


data.Add(44, new int[]{5,8,0,0,2,5,9});
data.Add(99, new int[]{9,9,9,9,5,5,1});
data.Add(12, new int[]{0,0,9,5,1,7,1});

通过使用字典,您可以以较低的复杂度获得所需的效果。 这将使您能够为每个阵列创建唯一的键

在.NET中Dictionary<TKey, TValue>如果键是唯一的Dictionary<TKey, TValue>使用Dictionary<TKey, TValue> “第一个数字就像主键” 您可以使用int[]List<int> (如果应该可变)作为值。

var dict = new Dictionary<int, int[]>();
var values = new[] { 5, 8, 0, 0, 2, 5, 9 };
dict.Add(44, values);
values = new[] { 9, 9, 9, 9, 5, 5, 1 };
dict.Add(99, values);
// ...

您可以通过密钥以非常有效的方式访问它:

Console.Write(dict[44][0]);  // 5

您可以使用Dictionary<int, List<int>>

var data = new Dictionary<int, List<int>>();
data.Add(44, new List<int> { 5, 8, 0, 0, 2, 5, 9 });
data.Add(99, new List<int> { 9, 9, 9, 9, 5, 5, 1 });
//....

并利用:

var id = 44;
var value1 = data[id][0];
// ...

如果您可以使键保持唯一,那么“字典”是最佳选择,如其他答案所述,如果您希望每个值多个键,那么“查找”是最佳选择, 请参见

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM