C# - 将一个字符串变量与多个其他字符串进行比较 (String.Equals)

C# - Compare one string variables to multiple other string (String.Equals)

您有什么想法可以避免多次 String.Equals 吗? 例如:

if (interSubDir.Equals("de") || interSubDir.Equals("de-DE"))

谢谢!

Linq 可以为您提供帮助。 listToChechAgainst 可以是简单变量或 private/public 属性.

var listToChechAgainst = new[] { "de", "DE-de" };

if(listToChechAgainst.Any(x => innerSubDir.Equals(x)));

如果您只是想让它更具可读性,或者需要更少的输入,您可以像这样编写一个字符串扩展方法:

public static class StringExt
{
    public static bool EqualsAnyOf(this string value, params string[] targets)
    {
        return targets.Any(target => target.Equals(value));
    }
}

您可以按如下方式使用:

if (interSubDir.EqualsAnyOf("de", "de-DE"))

或者

if (interSubDir.EqualsAnyOf("de", "de-DE", "en", "en-GB", "en-US"))

等等。

创建 collection 个值:

string[] values = { "de", "de-DE" };

使用Contains方法:

if (values.Contains(interSubDir))

它提供了 O(n) 的性能。

如果你的 collection 非常大,那么你可以使用 Array.BinarySearch 方法,这会给你 O(log n) 性能。

if (Array.BinarySearch(values, interSubDir) >= 0)

但是,collection必须先排序。

Array.Sort(values);