【发布时间】:2020-07-29 12:27:33
【问题描述】:
Visual Studio 2019 建议将我编写的 switch 语句转换为 switch expression(两者都包含在下面的上下文中)。
对于像这样的简单示例,将其编写为表达式是否有任何技术或性能优势?例如,这两个版本的编译方式是否不同?
声明
switch(reason)
{
case Reasons.Case1: return "string1";
case Reasons.Case2: return "string2";
default: throw new ArgumentException("Invalid argument");
}
表达式
return reason switch {
Reasons.Case1 => "string1",
Reasons.Case2 => "string2",
_ => throw new ArgumentException("Invalid argument")
};
【问题讨论】:
-
在您的示例中,我想说唯一的优点是后者不那么冗长,因此更具可读性(一旦您习惯了新语法)。对于扩展使用,一大优势是您可以直接从
switch返回一个值 - 更少的程序代码。 -
更易读,我想说
-
您对技术转换语句与表达的优缺点的研究如何应用?因为否则您要求复制 SO 内容并且您没有显示任何研究。
-
虽然
case Reasons.Case1是多余的,但就我个人而言,我更喜欢写出default:而不是必须凭直觉知道_ =>意味着默认...该语句实际上比表达式稍早一点。
标签: c# switch-statement switch-expression