代码之家  ›  专栏  ›  技术社区  ›  julian bechtold

c中IF子句中OR运算符的较短版本#

  •  0
  • julian bechtold  · 技术社区  · 7 年前

    bool bananaIsYellow = true;
    bool bananaIsBrown = false;
    if (bananaIsYellow || bananaIsBrown) bool bananaIsRipe = true;
    

    string bananaColor = yellow;
    if (bananaColor == "yellow" || 
        bananaColor == "brown" ||
        bananaColor == "blue")
    {
        bool bananaIsRipe = true;
    }
    

    我唯一能知道的是这样的事情(显然不是更美或更短):

    string bananacolor = "yellow";
    if (StringComparer(bananacolor, new string[] { "yellow", "brown", "blue" })) { bool bananaIsRipe = true; }
    }
    private static bool StringComparer(string source, string[] values)
    {
        foreach (var value in values)
        {
            if (source == value) return true;
        }
        return false;
    }
    
    2 回复  |  直到 7 年前
        1
  •  6
  •   Tim Schmelter    7 年前

    您可以使用集合和 Enumerable.Contains :

    string[] ripeColors = { "yellow", "brown", "blue" };
    bool isBananaRipe = ripeColors.Contains(bananacolor);
    

    如果要以不区分大小写的方式进行比较:

    bool isBananaRipe = ripeColors.Contains(bananacolor, StringComparer.InvariantCultureIgnoreCase);
    

        2
  •  1
  •   Tim Biegeleisen    7 年前

    一种选择可能是使用带有替代项的正则表达式:

    Regex regex = new Regex(@"^(yellow|brown|blue)$");
    string bananaColor = "yellow";
    Match match = regex.Match(bananaColor);
    
    if (match.Success)
    {
        Console.WriteLine(match.Value);
    }
    

    Demo