此开关和外壳标签中括号的用途是什么?

What is the purpose of the parenthesis in this switch and case label?

我正在为项目服务编写一个函数,如果用户请求某个名称下的所有项目,它将 return 全部。例如所有 iPhone X 等

的手机

我得到了帮助,使其中一个功能正常工作,如果有超过 1 个项目,它将 return 所有(这是第三种情况):

var itemsList = items.ToList();

switch (itemsList.Count())
{
    case 0:
        throw new Exception("No items with that model");

    case 1:
        return itemsList;

    case { } n when n > 1:
        return itemsList;
}

return null;

令我困惑的是 { } 是做什么用的?有人告诉我这是 "a holding place as sub for stating the type" 我不确定他们的意思。

它是如何工作的?我不确定 n 的用途。

非常感谢任何帮助!

进展:在跟进帮助者之后,我现在知道 { }var 相似。但我仍然不确定为什么它只用在这里。

显示{ }用法的是pattern matching that was introduced in C# 8. { } matches any non-null value. n is used to declare a variable that will hold matched value. Here is a sample from MSDN的能力。

样本说明:

switch (itemsList.Count())
{
    case 0:
        throw new Exception("No items with that model");

    case 1:
        return itemsList;

    // If itemsList.Count() != 0 && itemsList.Count() != 1 then it will
    // be checked against this case statement.
    // Because itemsList.Count() is a non-null value, then its value will
    // be assigned to n and then a condition agaist n will be checked.
    // If condition aginst n returns true, then this case statement is
    // considered satisfied and its body will be executed.
    case { } n when n > 1:
        return itemsList;
}

它被称为property pattern{} 处理剩余的 nonnull 对象。 属性 模式表示 属性 需要具有特定的常量值。但是,在您的示例中,我认为只是通过确保 n 不为空来在 switch 表达式中使用 n 。我的意思是它的等价物如下。

if (itemsList is {} n && n.Count() > 1)
{
    return itemsList;
}