【发布时间】:2016-11-11 21:28:51
【问题描述】:
这两个数组可以相互通信还是它们需要是相同的类型,即 [,] 只能与其他 [,] 数组通信。
或者如果我有:
char [,] 2darray =new char [2,2];
它是否可以将它的值传递给具有二维数组的方法,例如:
Shirts(char [][] sizes)
这是用于示例的伪代码,我真的只是想知道这种类型的数组调用的区别是什么以及它们是否可以相互通信。
【问题讨论】:
这两个数组可以相互通信还是它们需要是相同的类型,即 [,] 只能与其他 [,] 数组通信。
或者如果我有:
char [,] 2darray =new char [2,2];
它是否可以将它的值传递给具有二维数组的方法,例如:
Shirts(char [][] sizes)
这是用于示例的伪代码,我真的只是想知道这种类型的数组调用的区别是什么以及它们是否可以相互通信。
【问题讨论】:
这两种类型是不同的。它们在内存中的表示方式不同,因此不可互换。
二维数组char m[,] 需要具有相同大小的行,并且所有行都必须存在。相比之下,数组char m[][] 的数组允许有可变长度的行,甚至是一些缺失的行。
数组数组的元素是一个数组,您可以将其作为单独的实体传递。二维数组是一个单元;它的索引器操作符需要每个维度的索引。换句话说,你可以这样做
char m[][] ...
char r[] = m[2]; // Allowed
但你不能这样做
char m[,] ...
char r[] = m[2]; // Does not compile
【讨论】: