C# 值元组类型模式
我试图使用C#7中的类型模式来对抗元组类型:C# 值元组类型模式,c#,c#-7.0,valuetuple,C#,C# 7.0,Valuetuple,我试图使用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
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;
}
}
var lst=newlist();
第1条添加(“foo”);
第一段加上((“酒吧”、“酒吧”);
foreach(lst中的var项目){
开关(项目){
大小写字符串s:
打破
case(string,string)t://此处出现编译器错误
打破
}
}
但是编译器给了我以下错误:
无效的表达式术语“字符串”
应为常量值
我如何解决这个问题
注意:我知道我可以使用:
case ValueTuple<string,string> t:
案例值组t:
但是我想知道是否有更好的语法。只要使用
case-ValueTuple t:
当我发布这个答案时,你刚刚在你的问题中添加了相同的解决方案。好的,你必须坚持使用这个解决方案,直到他们为
案例(,):
语法添加编译器支持(因为这是一个边缘案例,所以不要等待)。有不同种类的模式没有在C#7.0中实现,但是在中被跟踪,包括你描述的递归模式和位置模式。其中一些是以后7.x点版本的候选版本