【问题标题】:Pattern Matching on a string字符串的模式匹配
【发布时间】:2017-03-22 13:06:42
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# pattern-matching c#-7.0


    【解决方案1】:

    这在 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 2011-09-08
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      相关资源
      最近更新 更多