3
我在想,如果匹配有辦法做這樣的事情在C#7C#7圖案上的繩子
var test = "aaeag";
switch (test)
{
case test.StartsWith("a"):
break;
default:
break;
}
可悲的是它看起來並不像它可能。這是正確的還是我做錯了什麼?
我在想,如果匹配有辦法做這樣的事情在C#7C#7圖案上的繩子
var test = "aaeag";
switch (test)
{
case test.StartsWith("a"):
break;
default:
break;
}
可悲的是它看起來並不像它可能。這是正確的還是我做錯了什麼?
這可能是用C#7,使用when
後衛:
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#版本的這一功能,那麼請upvote this proposal。
@ paulo-morgado,根據提案,活動模式示例中的代碼應該是'case StartsWith(「a」):'。這個想法是編譯器刪除了'Pattern'後綴。 –