C# 文字列比較に「= =」は使用するべき?equals()メソッドを使用するべき?

C#

C#の文字列比較方法はいくつかありますが、
今回は文字列比較に「 == 」かStringクラスでの「equalsメソッド」のどちらを使用するかについてです。

●文字列比較に「 == 」を使用するべき?

C#にて文字列比較に「 == 」を使用することがありますが、
なるべくなら、C#にて文字列比較に「 == 」を使用すべきではありません。

「 == 」を使用して比較すると?

if("abc" == "abc")
{
//
}

MSDNのC#プログラミングガイドにもありますが、文字列比較においては比較の種類を明示的に指定するメソッドを指定する方がよいようです。

「== 」でも文字列の比較は可能ですが、場合によっては予期せぬ演算子比較が行われることでバグの温床となる可能性もあります。

具体的には、文字列ではなく文字列が含まれるアドレス自体を比較してしまいアドレスに格納されている文字列が同一でもFalseとして判定されることがあります。

●stringクラスのequals()メソッドを使用!

equals()メソッドを使用しての比較ソース

if (string.Equals("abc", "abc") )
{
//
}

このequals()メソッドはオブジェクトの比較に用いられます。
Stringクラスで、equals()メソッドを定義した場合は、

  • 2つのオブジェクトが同じかどうか
  • 2つのオブジェクトが表している文字列の内容が同じかどうか

の比較を行います。

文字列の比較を行う場合は気をつけてみてください。

コメント

タイトルとURLをコピーしました