2

当我不区分大小写地比较两个字符串时,我使用:

if (s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase)) ...

我想在我的代码中缩短这个语句,因为String.Comparison.InvariantCultureIgnoreCase它非常冗长,特别是如果你必须进行多重比较。

有没有办法给它起别名,以便在整个 MVC 项目中拾取它?(我也有外部类,我也必须添加这个别名)

4

5 回答 5

4

您可以使相等比较器成为私有静态变量,并在您的方法中使用该变量:

在您的班级声明中:

private static readonly IEqualityComparer<string> EqIgnoreCase =
    StringComparer.InvariantCultureIgnoreCase;

在你的方法中:

if (EqIgnoreCase.Equals(s1, s2)) {
    // ...
}

这种方法的一个优点是它看起来是对称的。另一个是它不会抛出 ifs1s2is null

于 2012-06-06T15:44:40.183 回答
2

你可以为它写一个扩展方法

namespace ExtensionMethods
{
  public static class MyExtensions
  {
    public static bool MyEqual(this String s1, string s2)
    {
        return s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
    }
  }
}
于 2012-06-06T15:40:11.677 回答
2

为什么不编写一个扩展方法来进行这种不带大小写的比较呢?

public static bool EqualsIgnoreCase(this string s1, string s2)
{
    return s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
}
于 2012-06-06T15:41:04.663 回答
1

一种简单的扩展方法。

public static bool EqualsCaseLess(this string s1, string value)
{
  return s1.Equals(value, StringComparison.InvariantCultureIgnoreCase);
}
于 2012-06-06T15:42:17.913 回答
0

扩展方法:

public static CiEquals(this string s1, string s2)
{
    return s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
}
于 2012-06-06T15:40:59.460 回答