在c#中,下面一段代码,用了switch进行循环,case里又用了for进行循环, 可是我不明白,一般的switch语句
后面的case有一个break用它来退出本次循环,都是放{}外面的,可是这段代码的break却放在{}里面,没有编译前我以为遍历的结果是1000060000,而实际却是1...
后面的case 有一个break 用它来退出本次循环,都是放{}外面的, 可是这段代码的break却放在{}里面,没有编译前我以为遍历的结果是1000060000,而实际却是12345678910,为什么当i或j等于1时, 为什么没有去执行break语句呢?而去执行for循环呢,不符合编程语法呀?怎么理解?
{
int[] arr1 = new int[] { 1, 2, 3, 4, 5 };
int[] arr2=new int[]{6,7,8,9,10};
int[,] arr3 = new int[2, 5];
for (int i = 0; i < arr3.Rank; i++)
{
switch (i)
{
case 0:
{
for(int j=0;j<arr1.Length;j++)
arr3[i,j]=arr1[j];
break;
}
case 1:
{
for (int j = 0; j < arr2.Length; j++)
arr3[i, j] = arr2[j];
break;
}
}
}
Console.WriteLine("合并后的二维数组:");
for (int i = 0; i < arr3.Rank; i++)
{
for(int j=0;j<arr3.GetUpperBound(arr3.Rank-1)+1;j++)
Console.WriteLine(arr3[i,j]+" ");
}Console.ReadKey( 展开
{
int[] arr1 = new int[] { 1, 2, 3, 4, 5 };
int[] arr2=new int[]{6,7,8,9,10};
int[,] arr3 = new int[2, 5];
for (int i = 0; i < arr3.Rank; i++)
{
switch (i)
{
case 0:
{
for(int j=0;j<arr1.Length;j++)
arr3[i,j]=arr1[j];
break;
}
case 1:
{
for (int j = 0; j < arr2.Length; j++)
arr3[i, j] = arr2[j];
break;
}
}
}
Console.WriteLine("合并后的二维数组:");
for (int i = 0; i < arr3.Rank; i++)
{
for(int j=0;j<arr3.GetUpperBound(arr3.Rank-1)+1;j++)
Console.WriteLine(arr3[i,j]+" ");
}Console.ReadKey( 展开
展开全部
break 语句用于终止最近的封闭循环或它所在的 switch 语句,你的写法,break终止的是switch选择分支而不是for循环,首先你没理解break的作用范围,其次,如果你不熟悉省略花括号的写法就尽量不要省略,虽然精简但容易造成预期外的错误并且不易读。
你这段代码的作用实际上就是把两个数组合并成一个二维数组,将arr1和arr2合并到arr3中,即便按你理解的break是终止for循环,其结果也不会是你写的1000060000。
你这段代码的作用实际上就是把两个数组合并成一个二维数组,将arr1和arr2合并到arr3中,即便按你理解的break是终止for循环,其结果也不会是你写的1000060000。
更多追问追答
追问
是这个for(int j=0;j<arr1.Length;j++)终止呀 ,这个for (int i = 0; i < arr3.Rank; i++)不终止呀
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |