【问题标题】:Value tuple type pattern值元组类型模式
【发布时间】:2018-01-16 10:17:57
【问题描述】:

我正在尝试在 C# 7 中针对元组类型使用类型模式:

var lst = new List<object>();
lst.Add("foo");
lst.Add(("bar","baz"));

foreach (var item in lst) {
    switch (item) { 
        case string s:
            break;
        case (string, string) t: //Compiler error here
            break;
    }
}

但是编译器给了我以下错误:

无效的表达式术语“字符串” 应为常数值

我该如何解决这个问题?


注意我知道我可以使用:

case ValueTuple<string,string> t:

但我想知道是否有更好的语法。

【问题讨论】:

    标签: c# c#-7.0 valuetuple


    【解决方案1】:

    只需使用case ValueTuple&lt;string, string&gt; t:

    当我发布此答案时,您刚刚为您的问题添加了相同的解决方案。好吧,在他们为 case (,): 语法添加编译器支持之前,您必须坚持使用此解决方案(不会等待,因为这是一种极端情况)。

    【讨论】:

      【解决方案2】:

      有不同类型的模式未在 C# 7.0 中实现,但在 patterns proposal 中进行了跟踪,包括您描述的递归和位置模式。其中一些是以后 7.x 点版本的候选版本。

      【讨论】:

        猜你喜欢
        • 2019-04-20
        • 1970-01-01
        • 1970-01-01
        • 2018-07-18
        • 2021-12-15
        • 1970-01-01
        • 1970-01-01
        • 2017-03-07
        • 1970-01-01
        相关资源
        最近更新 更多