值元组类型模式
Value tuple type pattern
我正在尝试使用 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;
}
}
但是编译器给我以下错误:
Invalid expression term 'string'
A constant value is expected
我该如何解决这个问题?
N.B。我知道我可以使用:
case ValueTuple<string,string> t:
但我想知道是否有更好的语法。
只需使用 case ValueTuple<string, string> t:
.
在我发布此答案时,您刚刚为您的问题添加了相同的解决方案。好吧,你必须坚持使用这个解决方案,直到他们添加对 case (,):
语法的编译器支持(不会等待,因为这是一个边缘案例)。
有多种模式未在 C# 7.0 中实现,但在 patterns proposal 中进行了跟踪,包括您描述的递归和位置模式。其中一些是以后 7.x 点发布的候选者。
我正在尝试使用 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;
}
}
但是编译器给我以下错误:
Invalid expression term 'string' A constant value is expected
我该如何解决这个问题?
N.B。我知道我可以使用:
case ValueTuple<string,string> t:
但我想知道是否有更好的语法。
只需使用 case ValueTuple<string, string> t:
.
在我发布此答案时,您刚刚为您的问题添加了相同的解决方案。好吧,你必须坚持使用这个解决方案,直到他们添加对 case (,):
语法的编译器支持(不会等待,因为这是一个边缘案例)。
有多种模式未在 C# 7.0 中实现,但在 patterns proposal 中进行了跟踪,包括您描述的递归和位置模式。其中一些是以后 7.x 点发布的候选者。