在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} };
代码确实编译并运行了,但结果不如预期 - 一个3x3对象数组,而输出的是一个3x1的数组,其中每个元素都是一个有3个元素的数组。当出现这种情况时,我无法使用以下方式访问我的数组:
Object val = twodArray[3,3];
我必须走了:
Object val = twodArray[3,1][3];
很明显这不是期望的结果。
那么,有没有办法在不使用迭代的情况下从多个现有数组初始化这个新的二维数组?