我是C#的新人。
我将矩阵构建为多维数组。数据由单个字符组成,如
a | g | f | r | o
t | * | h | s | u
y | j | f | . | k
所以我用了
char[,] matrix= new char[5, 3];
通过这种方式,我有一个带有5个collen和3个行的矩阵。 现在我想收集不同的矩阵,并保存在一个新的数组或另一种结构......
我想做的伪代码:
arrayOfMatrix.AddNewItem(matrix);
收集一个数组(或列表?)中的所有矩阵。这样做的最佳方式是什么?
答案 0 :(得分:3)
您可以使用这样的多维数组的通用List<T>
:
List<char[,]> arrayOfMatrix = new List<char[,]>();
arrayOfMatrix.Add(matrix1);
arrayOfMatrix.Add(matrix2);
答案 1 :(得分:1)
只需创建一个List<T>
!
List<T>
是一种集合类型,其行为类似于数组,但它没有固定长度,因此您可以动态地向其中添加项目。
让我们看看这个行动!
首先,创建一个字符矩阵列表:
var list = new List<char[,]>();
然后,创建一个字符矩阵并将其添加到列表中:
char[,] m1 = {{'a', 'b', 'c'}, {'a', 'b', 'c'}, {'a', 'b', 'c'}};
list.Add(m1);
您可以通过调用其索引器来访问列表:
Console.WriteLine(list[0]);
List
中有很多很酷的方法和属性允许你随意操作它:
Count
Contains
Clear
Find
IndexOf
Insert
Remove
Reverse
Sort
转到https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx了解详情。
答案 2 :(得分:1)
如果您正在处理char
元素,那么将char
行表示为string
会更简单。所以,你的矩阵变成了一个字符串数组或字符串列表。
List<string> matrix = new List<string>()
{
"agfro",
"t*hsu",
"yjf.k"
}
宣告:
List<List<string>> matrix_list = new List<List<string>>() { matrix };
然后根据需要继续将新矩阵添加到matrix_list中。您对元素的访问权限将是matrix_list[list_ix][row_ix][column_ix]
,其中ix是索引的缩写。
现在,您得到的实际上是锯齿状数组,因此您的代码可以强制执行矩阵宽度和长度。