2

大文字と小文字を区別せずに 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)) {
    // ...
}

このアプローチの利点の 1 つは、対称的に見えることです。s1もう 1 つは、 ifまたはs2is がスローされないことです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 に答える