【发布时间】:2023-03-04 03:05:02
【问题描述】:
在 C# 中,可以使用如下常量初始化多维数组:
Object[,] twodArray = new Object[,] { {"00", "01", "02"},
{"10", "11", "12"},
{"20", "21", "22"} };
我个人认为用硬编码常量初始化一个数组对于测试练习之外的任何事情都是无用的。无论如何,我迫切需要做的是使用现有数组初始化一个新的多维数组。 (它们具有相同的项目数,但内容当然只在运行时定义)。
我想做的一个例子是。
Object[] first = new Object[] {"00", "01", "02"};
Object[] second = new Object[] {"10", "11", "12"};
Object[] third = new Object[] {"20", "21", "22"};
Object[,] twodArray = new Object[,] { first, second, third };
很遗憾,这不能编译为有效代码。有趣的是,当我尝试时
Object[,] twodArray = new Object[,] { {first}, {second}, {third} };
代码确实编译并运行了,但结果并不理想 - 一个 3 x 3 的对象数组,结果是一个 3 x 1 的数组数组,每个数组有 3 个元素。发生这种情况时,我无法使用以下方法访问我的数组:
Object val = twodArray[3,3];
我得走了:
Object val = twodArray[3,1][3];
这显然不是我们想要的结果。
那么,有没有什么方法可以从多个现有数组中初始化这个新的二维数组,而无需借助迭代?
【问题讨论】:
-
Does Object[] { first, second, third };有意义而不是 Object[,] { first, second, third }; (去除维度昏迷) ?应记为 twoarray[3][3]
标签: c# arrays multidimensional-array initialization