Q1. int [][] num = new int[4][4] // 为什么这个不允许
Q2.
int[,] num = {
{0,2,1,0,5},
{0,0,0,3,0},
{0,0,0,0,1},
{0,3,1,0,0}
};var query = (from int n from num[0] // num[0] 又是不允许, 相反地用若是num[][] 就可以...??????
where n > 0
select n).count;Q3. 这种num[,] 定义, LINQ 如何重直查找 及 横向查找 ?
Q2.
int[,] num = {
{0,2,1,0,5},
{0,0,0,3,0},
{0,0,0,0,1},
{0,3,1,0,0}
};var query = (from int n from num[0] // num[0] 又是不允许, 相反地用若是num[][] 就可以...??????
where n > 0
select n).count;Q3. 这种num[,] 定义, LINQ 如何重直查找 及 横向查找 ?
int[][] num = new int[4][];A2.int[,]这个是二维数组,索引时,必须要用两个维的索引来取值,而且取的值是一个int型
而int[][]是数组的数组,num[0]是一个int数组A3.这种情况好像不用linq更好吧
但是C#提供了一种更为灵活的锯齿数组,就是你的Q1问题中的形式,但是你定义错了,因为锯齿数组每一维的长度可以不一定,需要另外定义,如下面所示://锯齿数组
int[][] a = new int[3][];
//然后这样对每个数组赋值
a[0] = new int[10] ;
a[1] = new int[7] ;
a[2] = new int[15] ;看到了区别么?就是锯齿数组更为的灵活,二维的长度可以不固定,就满足了很多特定的应用要求。具体的你可以查看MSDN...上面讲的很详细
一维数组:
int[二] numbers;
维数组:
string[,] names;
数组的数组(交错的):
byte[][] scores;
一维数组:
int[] numbers;
二维数组:
string[,] names;
数组的数组(交错的):
byte[][] scores;
不好意思,鼠标点错了
2维 string[,] names = new string[5,4];
3维 int[,,] buttons = new int[4,5,3];
下面是交错数据
byte[][] scores = new byte[5][];
for (int x = 0; x < scores.Length; x++) { scores[x] = new byte[4];}