你有想法避免做多个String.Equals吗?例如:
if (interSubDir.Equals("de") || interSubDir.Equals("de-DE"))
Run Code Online (Sandbox Code Playgroud)
谢谢!
如果您只是想让它更具可读性或需要更少的输入,您可以编写一个字符串扩展方法,如下所示:
public static class StringExt
{
public static bool EqualsAnyOf(this string value, params string[] targets)
{
return targets.Any(target => target.Equals(value));
}
}
Run Code Online (Sandbox Code Playgroud)
你可以使用如下:
if (interSubDir.EqualsAnyOf("de", "de-DE"))
Run Code Online (Sandbox Code Playgroud)
要么
if (interSubDir.EqualsAnyOf("de", "de-DE", "en", "en-GB", "en-US"))
Run Code Online (Sandbox Code Playgroud)
等等.
创建值集合:
string[] values = { "de", "de-DE" };
Run Code Online (Sandbox Code Playgroud)
使用Contains方法:
if (values.Contains(interSubDir))
Run Code Online (Sandbox Code Playgroud)
它提供了 O(n) 的性能。
如果您的集合非常大,那么您可以使用Array.BinarySearch方法,该方法可为您提供 O(log n) 性能。
if (Array.BinarySearch(values, interSubDir) >= 0)
Run Code Online (Sandbox Code Playgroud)
但是,必须先对集合进行排序。
Array.Sort(values);
Run Code Online (Sandbox Code Playgroud)