jha*_*100 13 c# pattern-matching switch-statement c#-7.0
是否可以使用c#7在switch语句中使用模式匹配的元组,如下所示:
switch (parameter)
{
case ((object, object)) tObj when tObj.Item1 == "ABC":
break;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误说tObj does not exist in the current context.
我也试过这个:
switch (parameter)
{
case (object, object) tObj when tObj.Item1 == "ABC":
break;
}
Run Code Online (Sandbox Code Playgroud)
这很好用:
switch (parameter)
{
case MachineModel model when model.Id == "123":
break;
}
Run Code Online (Sandbox Code Playgroud)
Dav*_*idG 19
请记住,C#7元组只是语法糖,所以(object, object)真的只是System.ValueTuple<object, object>.
我想开发团队没有考虑到元组的新语法这种特殊情况,但你可以这样做:
switch (parameter)
{
case System.ValueTuple<object, object> tObj when tObj.Item1 == "x":
break;
}
Run Code Online (Sandbox Code Playgroud)
此外,由于"var pattern"将匹配任何内容并尊重类型,因此上述内容可以简化为:
switch (parameter)
{
case var tObj when tObj.Item1 == "x":
break;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3705 次 |
| 最近记录: |