当我不区分大小写地比较两个字符串时,我使用:
if (s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase)) ...
我想在我的代码中缩短这个语句,因为String.Comparison.InvariantCultureIgnoreCase
它非常冗长,特别是如果你必须进行多重比较。
有没有办法给它起别名,以便在整个 MVC 项目中拾取它?(我也有外部类,我也必须添加这个别名)
当我不区分大小写地比较两个字符串时,我使用:
if (s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase)) ...
我想在我的代码中缩短这个语句,因为String.Comparison.InvariantCultureIgnoreCase
它非常冗长,特别是如果你必须进行多重比较。
有没有办法给它起别名,以便在整个 MVC 项目中拾取它?(我也有外部类,我也必须添加这个别名)
您可以使相等比较器成为私有静态变量,并在您的方法中使用该变量:
在您的班级声明中:
private static readonly IEqualityComparer<string> EqIgnoreCase =
StringComparer.InvariantCultureIgnoreCase;
在你的方法中:
if (EqIgnoreCase.Equals(s1, s2)) {
// ...
}
这种方法的一个优点是它看起来是对称的。另一个是它不会抛出 ifs1
或s2
is null
。
你可以为它写一个扩展方法。
namespace ExtensionMethods
{
public static class MyExtensions
{
public static bool MyEqual(this String s1, string s2)
{
return s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
}
}
}
为什么不编写一个扩展方法来进行这种不带大小写的比较呢?
public static bool EqualsIgnoreCase(this string s1, string s2)
{
return s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
}
一种简单的扩展方法。
public static bool EqualsCaseLess(this string s1, string value)
{
return s1.Equals(value, StringComparison.InvariantCultureIgnoreCase);
}
扩展方法:
public static CiEquals(this string s1, string s2)
{
return s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
}