C# switch 语句和括号

问题描述 投票:0回答:1

哪个例子中括号的数量是正确的? C# 12 编译器接受两者。

示例1:

switch ((value, Frozen))
{
    case ( >= 0 and <= 9, false):
        break;
    case (_, false):
        break;
    case (_, true):
        break;
}

示例 2:

switch (value, Frozen)
{
    case ( >= 0 and <= 9, false):
        break;
    case (_, false):
        break;
    case (_, true):
        break;
}
c# switch-statement parentheses
1个回答
0
投票

没有区别,所以两者都是正确的,但通常应该省略多余的(不必要的)括号,除非它们有助于清晰。括号在此上下文中可以表示:

  1. 要计算的子表达式
  2. 值元组的边界

但是:多个逗号分隔术语的存在是它们之间的区别;值元组的用法必须至少有 2 个术语,正是为了避免这种混乱。

所以:

  • 外括号只是表示一个子表达式(您可以有任意数量的子表达式,但它们没有任何作用)
  • 最里面的括号表示值元组,因为有逗号
© www.soinside.com 2019 - 2024. All rights reserved.