模式匹配字符串

我想知道是否有办法在c#7中做这样的事情

var test = "aaeag"; switch (test) { case test.StartsWith("a"): break; default: break; } 

可悲的是,它看起来不太可能。 这是正确的还是我做错了什么?

这可以通过C#7使用守卫:

 var test = "aaeag"; switch (test) { case var s when s.StartsWith("a"): break; default: break; } 

您的代码版本通常被称为活动模式 。 通过例如定义扩展方法:

 public static bool StartsWithPattern(this string str, string matchPattern) => str.StartsWith(matchPattern); 

然后您的开关可能变为:

 var test = "aaeag"; switch (test) { case StartsWith("a"): break; default: break; } 

如果您希望在未来的C#版本中看到此function,请提请投票 。