能否调用方法从调用位置终止循环?
能不能调用方法终止调用位置的循环?
不行,你写的代码根本没法通过编译。break语句只能终止它自己所在的循环或switch语句,没办法跨方法终止外部的循环——Stop()里的break找不到对应的循环块,编译器直接报错。
要实现类似需求,有几种常用方式:
让方法返回布尔值,在循环内判断后终止
这是最常规的做法,示例代码:void Run() { while (true) { if (NeedStop()) { break; } // 循环内的其他逻辑 } } bool NeedStop() { // 这里写判断是否要终止的逻辑,满足条件返回true return true; }使用类级别的标志变量
定义一个成员变量,在Stop()方法里修改这个变量,循环里检查变量状态:private bool _stopFlag; void Run() { _stopFlag = false; while (!_stopFlag) { Stop(); // 循环内的其他逻辑 } } void Stop() { // 满足终止条件时设置标志 _stopFlag = true; }用异常控制流程(不推荐)
虽然可以抛出异常然后在循环外捕获来终止,但异常是用来处理错误情况的,不是常规流程控制手段,会影响代码可读性和性能,不建议这么用。
内容的提问来源于stack exchange,提问作者Leo Christensson
相关产品推荐
相关产品推荐

