Lia*_*iam 5 c# pattern-matching c#-7.0
我想知道是否有办法在c#7中做这样的事情
var test = "aaeag";
switch (test)
{
case test.StartsWith("a"):
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
可悲的是,它看起来不太可能.这是正确的还是我做错了什么?
Dav*_*rno 10
这可以通过C#7使用when后卫来实现:
var test = "aaeag";
switch (test)
{
case var s when s.StartsWith("a"):
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
您的代码版本通常被称为活动模式.通过例如定义扩展方法:
public static bool StartsWithPattern(this string str, string matchPattern) =>
str.StartsWith(matchPattern);
Run Code Online (Sandbox Code Playgroud)
然后您的开关可能变为:
var test = "aaeag";
switch (test)
{
case StartsWith("a"):
break;
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
如果您希望在未来的C#版本中看到此功能,请提出此提议.
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |