.net column

.NET開発者のためのブログメディア
プログラムコード

C#で文字列を比較。Compare・Equalsメソッドの使い方

2019年11月01日

C#で文字列を比較する方法は、「Compareメソッド」と「Equalsメソッド」の二つがあります。
一見どちらも同じように思えますが、両者の比較基準は全く異なります。それぞれの用途に合った使い方ができるように、これら二つの比較メソッドは覚えましょう。

PG
Compareメソッド・EqualsメソッドはJavaなどの言語にもありますよね。
PM
そうですね。これらは使い方を間違えやすいので、正しく覚えてくださいね。

文字列の「並び順」を比較するCompareメソッド

Compareメソッドは、文字列AとBの並び順を比較するメソッドで主にソートや条件分岐に使われます。

下記のサンプルコードをもとに解説します。

実行結果を見てわかるとおり、「Compareメソッド」では-1 / 0 / 1の数値が返ってきます。

  • ・AがBよりも順番が前:-1
  • ・AとBの値が同じ:0
  • ・BがAよりも順番が後:1

先ほどのサンプルコードの場合、strAに「A」・strBに「B」が代入されています。
AはBよりも順番が前なので、上記のような実行結果になっています。

今回は簡単な例を挙げましたが、例えばstrAに「ABC」・strBに「abc」が代入されていた場合、順番は大文字→小文字になります。
※オプションで指定すれば“大文字・小文字の区別をなしにする”こともできます。

文字列「そのもの」を比較するEqualsメソッド

Equalsメソッドは、大文字・小文字も区別し「AとBが全く同じ文字列かどうか」を判定するメソッドです。
では、こちらもコードを見ながら使い方を確認していきましょう。

至って簡単な例ですが、Equalsメソッドを用いて「strAとstrBが同じ値かどうか」を判定しています。
加えて、上記のコードの場合はstrAにもstrBにも同じ「あいうえお」が代入されているため、実行結果は“同じ”と出力されます。

★補足★
Javaなどでは、よく※1同一性・※2同値性と言われ「==」よりもEqualメソッドを使うよう推奨されています。
しかしC#では、Stringの定義に「==」がオーバーライドされており、「==」でもEqualsメソッドと同じ効果が得られます。

※1同一性…変数の参照先が同じ
※2同値性…変数の値が同じ

ちなみに、もし大文字・小文字を区別したくない場合、下記のようにEqualsメソッドの引数の中に「StringComparison, OrdinalIgnoreCase」と記述すると、ABCとabcでも実行結果は“同じ”と出力されます。

もちろん、大文字・小文字以外にも様々な指定ができるので興味がある方は色々試してみてください。

PG
C#の文字列の比較のメソッド、よく分かりました!
PM
C#のメソッドをマスターするには知識と実践が大事です!まずは演習問題などからチャレンジしてみましょう。

CompareメソッドとEqualsメソッドを使いこなそう

このように、「Compareメソッド」と「Equalsメソッド」の使い方は全く異なります。
特にCompareメソッドは、「どういう場合に-1でこのようなケースに1が返ってくるのか」など間違えやすいため、この機会に使いこなせるようにしましょう。

>>>C#の案件を探すならFEnet .NET Navi


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)