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