能否在C#的switch表达式分支中使用return语句?
问题解答:switch表达式分支中能否使用return语句?
不能在switch表达式的分支中直接使用跳出函数的return语句,具体说明如下:
语法本质差异:
switch表达式属于表达式范畴,它的核心作用是计算出一个匹配类型的值并赋值给目标变量(比如你的message),每个分支必须返回与表达式整体类型一致的结果。而用于跳出函数的return是语句,会直接终止当前函数的执行,这不符合表达式的语法规则,编译器会直接报错。注意:switch表达式的块体分支中可以用
return,但这个return仅用于返回该分支的表达式结果,并非跳出当前函数,示例如下:int num = chose switch { 1 => { return 2; }, // 此处return仅返回分支结果,不终止函数 _ => 0 };这和你想要的“直接返回函数值”不是同一逻辑。
你的代码还存在额外语法错误:
- 分支
1 => return 2返回的整数类型,与message的string类型完全不匹配; - 默认分支末尾多了多余的标点:
"default".。
- 分支
如果你的需求是:在某个分支直接返回整数,其他分支给message赋值后再处理返回,应该改用switch语句,示例代码如下:
var chose = 2; string message = ""; switch (chose) { case 1: return 2; // 此处return直接跳出函数,符合语法规则 case 2: message = "hello"; break; case 3: message = "wow"; break; default: message = "default"; break; } // 后续根据message处理并返回整数的逻辑示例 return int.TryParse(message, out var result) ? result : -1;
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

