カテゴリ: C# 更新日: 2025/10/23

C#の文字列の比較方法を徹底解説!==・Equals・Compareの違いを初心者向けに解説

C#の文字列の比較方法(==・Equals・Compare)を解説
C#の文字列の比較方法(==・Equals・Compare)を解説

先生と生徒の会話形式で理解しよう

生徒

「先生、C#で文字列を比べたいときって、どうすればいいんですか?」

先生

「良い質問ですね。C#では、文字列を比較する方法がいくつかあります。代表的なのは『==』『Equals』『Compare』です。」

生徒

「3つもあるんですね!どれを使えばいいのかわからなくなりそうです…」

先生

「安心してください。それぞれの使い方と違いを、初心者でも分かるようにやさしく解説していきますね。」

1. C#で文字列を比較する基本の考え方

1. C#で文字列を比較する基本の考え方
1. C#で文字列を比較する基本の考え方

C#では、文字列(string型)を比較して「同じ文字列かどうか」を判断することがよくあります。たとえば、ユーザーが入力したパスワードが正しいか確認したり、ファイル名やデータ名が一致しているか調べたりする場面です。

文字列比較には大きく分けて3つの方法があります。

  • ==演算子:もっともシンプルに文字列を比べる方法。
  • Equalsメソッド:より正確に、オブジェクト同士を比較する方法。
  • Compareメソッド:大小関係(辞書順など)を調べる方法。

それぞれの特徴を、具体的なコードと一緒に見ていきましょう。

2. ==演算子で文字列を比較する

2. ==演算子で文字列を比較する
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メソッドで文字列を比較する

3. Equalsメソッドで文字列を比較する
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メソッドで文字列の順序を比較する

4. Compareメソッドで文字列の順序を比較する
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. どの方法を使うべき?それぞれの使い分け

5. どの方法を使うべき?それぞれの使い分け
5. どの方法を使うべき?それぞれの使い分け

ここまでで3つの方法を学びましたが、実際にどれを使えばよいのか迷う方も多いでしょう。簡単に使い分けをまとめると次のようになります。

方法 特徴 おすすめの場面
== シンプルで読みやすい。基本は内容を比較。 単純な比較(例:IDや名前の一致確認)
Equals 大文字小文字の無視など、細かい設定が可能。 ユーザー入力など、柔軟な比較が必要なとき
Compare 辞書順で並び替えや大小比較ができる。 ソート(並び替え)処理をするとき

初心者のうちは、まず==演算子で慣れてから、必要に応じてEqualsCompareを使い分けるのがオススメです。

6. 文字列比較で注意すべきポイント

6. 文字列比較で注意すべきポイント
6. 文字列比較で注意すべきポイント

文字列比較でよくあるトラブルも紹介しておきましょう。たとえば、スペース(空白)や改行が混じっていると、意図しない結果になることがあります。


string s1 = "Hello";
string s2 = "Hello ";

if (s1 == s2)
{
    Console.WriteLine("同じ文字列です。");
}
else
{
    Console.WriteLine("異なる文字列です。");
}

異なる文字列です。

見た目は同じでも、末尾に空白があるだけで「異なる」と判断されます。そのため、比較前にTrim()メソッドで空白を取り除くのも効果的です。

カテゴリの一覧へ
新着記事
C#で複数ファイルをまとめて操作する方法(foreach・LINQ)をやさしく解説!
C#のインターフェースとは?クラス設計を柔軟にする基本技術
C#のコンストラクタの役割と使い方!オブジェクト初期化の基本
COBOLでデータベース接続を理解しよう!初心者でもわかる基本の考え方
人気記事
No.1
Java&Spring記事人気No1
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.3
Java&Spring記事人気No3
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.4
Java&Spring記事人気No4
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法