你有什么想法可以避免多次使用 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);
using System.Linq;
。 - Renascentvar listToCheckAgainst = new[] { "de", "DE-de" };
if(listToCheckAgainst.Any(x => interSubDir.Equals(x)));
interSubDir
。 - David