c# 小菜鸟求高手指教这题

来源:百度知道 编辑:UC知道 时间:2024/05/22 10:45:31
protected void Page_Load(object sender, EventArgs e)
{
string[,] abcd = new string[3, 3];
abcd[0,0]="1";
abcd[0,1]="2";
abcd[0,2]="3";
abcd[1,0]="4";
abcd[1,1]="5";
abcd[1,2]="6";
abcd[2,0]="7";
abcd[2,1]="8";
abcd[2,2]="9";
for(int i=0;i<abcd.Rank;i++)
{
for (int j=0;j<=abcd.GetUpperBound(abcd.Rank-1);j++)
{
Response.Write("<br>"+abcd[i,j].ToString());
}
}

我想问问,因为abcd.Rank的值是2,所以要减去1,
那我想如果把for里面的
j<=abcd.GetUpperBound(abcd.Rank-1)
改成:
j<abcd.GetUpperBound(abcd.Rank)
那里面就不用减去1了。可是运行的时候却出错。不知道为什么不行?

如果有时间的话帮忙解释一下 GetUpperBound方法,帮助里面不详细。

你的数组是个二维数组
abcd.Rank-1 值为0和1
用GetUpperBound分别取第1,2为的最高下标

改成abcd.Rank 值为1和2
用GetUpperBound分别取第2,3为的最高下标
你的数组没有第三维,所以出错了

protected void Page_Load(object sender, EventArgs e)
{
string[,] abcd = new string[3, 3];
abcd[0, 0] = "1";
abcd[0, 1] = "2";
abcd[0, 2] = "3";
abcd[1, 0] = "4";
abcd[1, 1] = "5";
abcd[1, 2] = "6";
abcd[2, 0] = "7";
abcd[2, 1] = "8";
abcd[2, 2] = "9";
for (int i = 0; i <= abcd.Rank; i++)
{
for (int j = 0; j <=abcd.GetUpperBound(0); j++)
{
Response.Write("<br>" + abcd[i, j].ToString());
}

}
}

GetUpperBound()可以获取数组的最高下标。
因为abcd是二维的,所以GetUpperBound(0)&