C#の文字列の比較方法を徹底解説!==・Equals・Compareの違いを初心者向けに解説
生徒
「先生、C#で文字列を比べたいときって、どうすればいいんですか?」
先生
「良い質問ですね。C#では、文字列を比較する方法がいくつかあります。代表的なのは『==』『Equals』『Compare』です。」
生徒
「3つもあるんですね!どれを使えばいいのかわからなくなりそうです…」
先生
「安心してください。それぞれの使い方と違いを、初心者でも分かるようにやさしく解説していきますね。」
1. C#で文字列を比較する基本の考え方
C#では、文字列(string型)を比較して「同じ文字列かどうか」を判断することがよくあります。たとえば、ユーザーが入力したパスワードが正しいか確認したり、ファイル名やデータ名が一致しているか調べたりする場面です。
文字列比較には大きく分けて3つの方法があります。
- ==演算子:もっともシンプルに文字列を比べる方法。
- Equalsメソッド:より正確に、オブジェクト同士を比較する方法。
- Compareメソッド:大小関係(辞書順など)を調べる方法。
それぞれの特徴を、具体的なコードと一緒に見ていきましょう。
2. ==演算子で文字列を比較する
==演算子は、C#で最も簡単に文字列を比較する方法です。まるで「左と右の文字列が同じか?」と質問しているようなイメージです。
string name1 = "apple";
string name2 = "apple";
string name3 = "banana";
if (name1 == name2)
{
Console.WriteLine("name1とname2は同じです。");
}
if (name1 == name3)
{
Console.WriteLine("name1とname3は同じです。");
}
else
{
Console.WriteLine("name1とname3は異なります。");
}
実行結果は以下のようになります。
name1とname2は同じです。
name1とname3は異なります。
このように、==演算子は「内容が同じ文字列かどうか」を比較してくれます。数字を比べるときと同じ感覚で使えるため、初心者にも分かりやすい方法です。
3. Equalsメソッドで文字列を比較する
Equalsメソッドは、C#のオブジェクト(データのまとまり)を比較するための関数です。文字列同士の比較にもよく使われます。
==演算子とほとんど同じように使えますが、少しだけ細かい制御ができる点が特徴です。
string fruit1 = "Orange";
string fruit2 = "orange";
bool result1 = fruit1.Equals(fruit2);
bool result2 = fruit1.Equals(fruit2, StringComparison.OrdinalIgnoreCase);
Console.WriteLine(result1);
Console.WriteLine(result2);
実行結果は次の通りです。
False
True
1つ目の比較では大文字・小文字が違うためFalse(異なる)になります。しかし、2つ目の比較ではStringComparison.OrdinalIgnoreCaseを使って「大文字小文字を区別しない」設定にしているため、True(同じ)になります。
このように、Equalsメソッドを使うと「大文字小文字を無視した比較」など、柔軟な条件で文字列を比べることができます。
4. Compareメソッドで文字列の順序を比較する
Compareメソッドは、2つの文字列の「順序(どちらが大きいか)」を調べるときに使います。数値で結果が返ってくるのが特徴です。
- 戻り値が
0→ 同じ文字列 - 戻り値が
負の数→ 左の文字列が小さい - 戻り値が
正の数→ 左の文字列が大きい
string a = "apple";
string b = "banana";
int result = string.Compare(a, b);
Console.WriteLine(result);
実行結果は次のようになります。
-1
「apple」は「banana」よりも辞書順で前に来るため、-1(小さい)という結果になります。
また、CompareメソッドもStringComparison.OrdinalIgnoreCaseを指定することで、大文字小文字を区別しない比較が可能です。
5. どの方法を使うべき?それぞれの使い分け
ここまでで3つの方法を学びましたが、実際にどれを使えばよいのか迷う方も多いでしょう。簡単に使い分けをまとめると次のようになります。
| 方法 | 特徴 | おすすめの場面 |
|---|---|---|
== |
シンプルで読みやすい。基本は内容を比較。 | 単純な比較(例:IDや名前の一致確認) |
Equals |
大文字小文字の無視など、細かい設定が可能。 | ユーザー入力など、柔軟な比較が必要なとき |
Compare |
辞書順で並び替えや大小比較ができる。 | ソート(並び替え)処理をするとき |
初心者のうちは、まず==演算子で慣れてから、必要に応じてEqualsやCompareを使い分けるのがオススメです。
6. 文字列比較で注意すべきポイント
文字列比較でよくあるトラブルも紹介しておきましょう。たとえば、スペース(空白)や改行が混じっていると、意図しない結果になることがあります。
string s1 = "Hello";
string s2 = "Hello ";
if (s1 == s2)
{
Console.WriteLine("同じ文字列です。");
}
else
{
Console.WriteLine("異なる文字列です。");
}
異なる文字列です。
見た目は同じでも、末尾に空白があるだけで「異なる」と判断されます。そのため、比較前にTrim()メソッドで空白を取り除くのも効果的です。