阵列阵列
本文关键字:阵列 | 更新日期: 2023-09-27 17:59:27
如何在C#中创建数组?我读过关于创建锯齿状阵列的文章,但我不确定这是否是最好的方法
string[] myArray = {string[] myArray2, string[] myArray3}
然后我可以像myArray.myArray2[0];
一样访问它
我知道代码不起作用,但只是作为一个例子来解释我的意思。
谢谢。
数组或多维数组的简单示例如下:
int[] a1 = { 1, 2, 3 };
int[] a2 = { 4, 5, 6 };
int[] a3 = { 7, 8, 9, 10, 11 };
int[] a4 = { 50, 58, 90, 91 };
int[][] arr = {a1, a2, a3, a4};
测试阵列:
for (int i = 0; i < arr.Length; i++)
{
for (int j = 0; j < arr[i].Length; j++)
{
Console.WriteLine("'t" + arr[i][j].ToString());
}
}
您需要一个锯齿状阵列,这是的最佳解决方案
int[][] j = new int[][]
或:
string[][] jaggedArray = new string[3][];
jaggedArray[0] = new string[5];
jaggedArray[1] = new string[4];
jaggedArray[2] = new string[2]
然后:
jaggedArray[0][3] = "An Apple"
jaggedArray[2][1] = "A Banana"
等等。。。
注意:
在使用jaggedArray之前元素必须初始化。
在您的情况下,您可以将数组封装在另一个类中,但这似乎是高度冗余的imho
您可以使用List of List。列表-它只是一个动态数组:
var list = new List<List<int>>();
list.Add(new List<int>());
list[0].Add(1);
Console.WriteLine(list[0][0]);
实现这一点的方法是通过锯齿状数组:
string[][] myArray;
你的方式真的没有意义:
myArray.myArray2[20] // what element is the first array pointing to?
它应该至少(如果可能的话)
myArray[1].myArray2[20];
这显然比使用锯齿状数组的标准方法更糟糕:myArray[1][20];
我无法理解你的真正目的。但作为选项,您可以使用dynamic
类型创建动态字典,如本文所述(请参见示例部分)
但更可能的是,您需要其他答案
我想做同样的事情来获得枚举表示的字符串列表。这里有一个可能的解决方案:
public enum Group
{
All = 0,
Artists = 1,
Builders = 2
}
private static readonly string[] _rolesAll = { "Brett", "Jeff", "Virgil", "Danielle" };
private static readonly string[] _rolesArtists = { "Brett", "Danielle" };
private static readonly string[] _rolesBuilders = { "Jeff" };
private static readonly SortedList<Group, string[]> _sortedGroupToRoles = new SortedList<Group, string[]> { { Group.All, _rolesAll }, { Group.Artists, _rolesArtists}, { Group.Builders, _rolesBuilders } };
然后使用它:
_sortedGroupsToRoles.TryGetValue(Group.Artists, out string[] roles);