你有避免做多个String.Equals的想法吗?例如:
if (interSubDir.Equals("de") || interSubDir.Equals("de-DE"))
谢谢!
如果您只是想使其更具可读性,或者需要更少的类型,则可以编写如下所示的字符串扩展方法:
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"))
等等。
创建值集合:
string[] values = { "de", "de-DE" };
使用Contains
方法:
if (values.Contains(interSubDir))
它提供 O(n( 性能。
如果你的集合非常大,那么你可以使用Array.BinarySearch
方法,这给你O(log n(性能。
if (Array.BinarySearch(values, interSubDir) >= 0)
但是,必须先对集合进行排序。
Array.Sort(values);
Linq可能会有用。 listToCheckAgainst
可以是一个简单的变量或私有/公共属性。
var listToCheckAgainst = new[] { "de", "DE-de" };
if(listToCheckAgainst.Any(x => interSubDir.Equals(x)));