当前位置: 代码迷 >> 综合 >> 1、C# 之break ,continue, return使用测试
  详细解决方案

1、C# 之break ,continue, return使用测试

热度:55   发布时间:2023-12-19 09:07:45.0

写作原因:最近写线程时遇到了优雅退出线程的问题,于是测试下这三个跳转语句的使用规则,如有不对的地方,请多多指教;

一、Microsoft官网解释

以下语句无条件转移控制:break 语句:将终止最接近的封闭迭代语句或 switch 语句。
continue 语句:启动最接近的封闭迭代语句的新迭代。
return 语句:可终止它所在的函数的执行,并将控制权返回给调用方。
goto 语句:将控制权转交给带有标签的语句。
有关引发异常并无条件转移控制权的 throw 语句的信息,请参阅 throw。

二、break

2.1 break语句概念

break 语句:将终止最接近的封闭迭代语句(即 forforeachwhile 或 do 循环)或 switch 语句。 break 语句将控制权转交给已终止语句后面的语句(若有)。

2.2 代码(for循环演示)

static void Main(string[] args)
{//for1for (int outer = 0; outer < 5; outer++){//for2for (int inner = 0; inner < 5; inner++){if (inner > outer){break;} Console.Write($"{inner} ");}Console.WriteLine();}       
}
// Output:
// 0
// 0 1
// 0 1 2
// 0 1 2 3
// 0 1 2 3 4
  • break和for2是最接近的
  • for2中遇到break就从break所在位置跳出for{}外面,即break后面的和‘}’前面的语句不会被执行

三、continue

3.1 continue语句概念

continue 语句启动最接近的封闭迭代语句(即 forforeachwhile 或 do 循环)的新迭。continue语句只能用在while语句、do/while语句、for语句、或者for/in语句的循环体内,在其它地方使用都会引起错误!

3.2代码

static void Main(string[] args)
{for (int i = 0; i < 5; i++){Console.Write($"Iteration {i}: ");if (i < 3){Console.WriteLine("skip");continue;}Console.WriteLine("done");}
}
// Output:
// Iteration 0: skip
// Iteration 1: skip
// Iteration 2: skip
// Iteration 3: done
// Iteration 4: done

当i小于3时,就会执行skip,然后到达continue语句,这时就会返回到for头部执行新的一次循环,即continue之后for右括号之前的内容都不执行;

四、return

4.1 return 语句概念

return 语句终止它所在的函数的执行,并将控制权和函数结果(若有)返回给调用方。如果函数成员不计算值,则使用不带表达式的 return 语句。return语句就是用于指定函数返回的值。return语句只能出现在函数体内,出现在代码中的其他任何地方都会造成语法错误!

当执行return语句时,即使函数主体中还有其他语句,函数执行也会停止!

4.2 代码

  • 直接作为一条语句表示当前函数结束
static void Main(string[] args)
{Console.WriteLine("First call:");DisplayIfNecessary(0);Console.WriteLine("Second call:");DisplayIfNecessary(1);
}
static void DisplayIfNecessary(int number)
{if (number > 0){return;}Console.WriteLine(number);
}
// Output:
//First call:
//0
//Second call:

 可以看到,第一次输入0,不大于0,直接到Console.WriteLine(number);

第二次,输入1,执行return,直接跳出函数,return后面的语句 都不在执行;

  • 循环中使用,以前我以为只会退出循环,并不会跳出函数,这次试验发现,只要在函数中触发了return,就会跳出函数返回;
static void Main(string[] args)
{int a=0;a=aa(a);Console.WriteLine("结束");
}static int aa(int a)
{for (int i = 0; i < 2; i++){if (i == 1){a = i;return a; //这时候。当I等于4的时候。遁环就结束了。而且也不会执行循环下面的语句。}}//跳出上面的循环,同时下面这些也不会执行,直接跳到最后,跳出这个函数Console.WriteLine("我跳出了for循环,看看我能不能被执行。。。");a = a + 250 - a;   Console.WriteLine("a:{0}",a);return a;
}
// Output:
//结束

五、总结

break、continue语句简单,用在循环里面,阅读思维是,看到这两货,后面的都不用看了,前者是退出最近的循环,后者是结束当前循环并开启新一次循环,功能实现思维是,通过这两个语句实现条件控制,起到一个分水岭的功能;

return语句不光用在循环中,还用在函数中,在函数中触发到return,后面的不再执行,直接返回并跳出函数,如果是使用在函数中的循环中,一样跳出循环并跳到函数最后退出函数。

一句话:遇到这三个,他们后面的就不会再执行了。

  相关解决方案