模式匹配字符串
我想知道是否有办法在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,请提请投票 。