新的 C# 8.0 switch 表达式的运算符优先级是什么?
What is the operator precedence for the new C# 8.0 switch expressions?
我刚刚将当前项目升级到新发布的 .NET Standard 2.1 和 C# 8.0,并决定将一些大型 switch
语句转换为新的、更紧凑的 expression syntax。
由于返回值在某些计算中被进一步使用,我想知道当输入变量位于运算符旁边时新 switch
表达式的行为方式。
字符串连接的例子如下:
string input = Console.ReadLine();
string output = "Letter: " + input switch
{
"1" => "a",
"2" => "b",
_ => "else"
};
Console.WriteLine(output);
我猜想 switch
与 input
变量的绑定非常紧密,因此首先被评估。事实上,当我输入 1
.
时,它会打印 Letter: a
但我现在的问题是:这种行为是否适用于任何运算符?
根据我的实验,我无法确定上述假设不成立的情况,但这显然并不意味着我没有遗漏任何情况。文档似乎也没有在 switch
表达式的上下文中提及运算符优先级。还是我这里有更深层次的误解?
我刚刚将当前项目升级到新发布的 .NET Standard 2.1 和 C# 8.0,并决定将一些大型 switch
语句转换为新的、更紧凑的 expression syntax。
由于返回值在某些计算中被进一步使用,我想知道当输入变量位于运算符旁边时新 switch
表达式的行为方式。
字符串连接的例子如下:
string input = Console.ReadLine();
string output = "Letter: " + input switch
{
"1" => "a",
"2" => "b",
_ => "else"
};
Console.WriteLine(output);
我猜想 switch
与 input
变量的绑定非常紧密,因此首先被评估。事实上,当我输入 1
.
Letter: a
但我现在的问题是:这种行为是否适用于任何运算符?
根据我的实验,我无法确定上述假设不成立的情况,但这显然并不意味着我没有遗漏任何情况。文档似乎也没有在 switch
表达式的上下文中提及运算符优先级。还是我这里有更深层次的误解?