高分之下,我也留留口水。
不知你知不知道,你的写法错了?
int [,]就是楼上所说的二维数组,他是“整齐”的,也就是说每一维都相等。他可以是“正方形”、“立方体”......,而你写的{{2,3},{1,2,3,4}}两维“不整齐”,所以是错的。
例如,int[3,5]是这样的:
xxxxx
xxxxx
xxxxx
多么整齐的方块!:)int[][]是数组的数组(AOA),“可以声明成锯齿数组”,不过你的写法也不正确,应该是
int [][]={new int[]{2,3},new int[]{1,2,3,4}}; 可以看出他的元素就是数组。
他是这样的,不整齐:
xx
xxxx
一共六个元素,没有你说的“0,0”。
不知你知不知道,你的写法错了?
int [,]就是楼上所说的二维数组,他是“整齐”的,也就是说每一维都相等。他可以是“正方形”、“立方体”......,而你写的{{2,3},{1,2,3,4}}两维“不整齐”,所以是错的。
例如,int[3,5]是这样的:
xxxxx
xxxxx
xxxxx
多么整齐的方块!:)int[][]是数组的数组(AOA),“可以声明成锯齿数组”,不过你的写法也不正确,应该是
int [][]={new int[]{2,3},new int[]{1,2,3,4}}; 可以看出他的元素就是数组。
他是这样的,不整齐:
xx
xxxx
一共六个元素,没有你说的“0,0”。
using System;class Control
{
virtual public void SayHi()
{
Console.WriteLine("Base control class");
}
}class Button : Control
{
override public void SayHi()
{
Console.WriteLine("buttom control");
}
}class Combo : Control
{
override public void SayHi()
{
Console.WriteLine("combobox control");
}
}class JaggeArrayApp
{
using System;class Control
{
virtual public void SayHi()
{
Console.WriteLine("Base control class");
}
}class Button : Control
{
override public void SayHi()
{
Console.WriteLine("buttom control");
}
}class Combo : Control
{
override public void SayHi()
{
Console.WriteLine("combobox control");
}
}class JaggeArrayApp
{
public static void Main()
{
Control[][] controls;
controls = new Controls[2][];
controls[0] = new Control[3];
for(int i = 0; i < controls[0].Length; i++)
{
controls[0][i] = new Button();
} controls[1] = new Control[2];
for(int i = 0; i < controls[1].Length; i++)
{
controls[1][i] = new Combo();
} for(int i = 0; i < controls.Length; i++)
{
for(int j = 0; j < controls[i].Length; j++)
{
Control control = controls[i][j];
control.SayHi();
}
}
string str = Console.ReadLine();
}
}以上代码摘自《Inside C#》
using System后面应该是英文分号:)
CForce() 125
looluo(小猪) 100
ripper(rIPPER) 50
int[] temp = a[4];
temp[5];
而[,]可以想象成一块m*n大小的连续内存(.NET内部也应该是这样处理的),所以对元素的访问是直接的一次操作,a[4,5](设a定义为a[10,10]):
int offset = 4*10 + 5;
memory(a) [offset] //内部操作,读取a对应的10*10内存的第offset个元素。
所以,[,]的效率要比[][]好的多,如果不是必须(不确定第二维的大小),一般不要使用锯齿数组。