【C#】Containsで配列に値が含まれるか判定する方法を分かりやすく解説

※ この記事にはアフィリエイトリンクが含まれます

C#で値が配列中に存在するか判定することはしばしばあるかと思います。

  • 入力された文字が有効なコードかチェックしたい
  • 許可されている値の一覧に含まれているか調べたい
  • データを絞り込むときに特定の値が含まれているか確認したい

こういった処理をシンプルに書けるのが Contains メソッド です。

この記事では、C# の Contains を使って配列内の要素を検索する方法を、基礎から実務で役立つ応用まで わかりやすく解説します。

目次

Containsとは?

Contains は、配列やリストなどのコレクションに、指定した値が含まれているかを調べるメソッド です。

  • 戻り値は bool
  • true なら「含まれている」
  • false なら「含まれていない」

配列で使う場合、System.Linq が必要です。

using System.Linq;

array.Contains(value);

シンプルで読みやすいのが特徴です。

配列でContainsを使う基本例

文字列配列で検索する

using System.Linq;

string[] fruits = { "apple", "banana", "orange" };
bool exists = fruits.Contains("banana");

Console.WriteLine(exists); // True

指定した文字列が存在するかを1行で書けるので非常に便利です。

整数配列で検索する

using System.Linq;

int[] numbers = { 1, 2, 3, 4 };
bool exists = numbers.Contains(3);

Console.WriteLine(exists); // True

整数配列でも使い方はまったく同じです。

判定結果をif文で利用する

if (fruits.Contains("apple"))
{
    Console.WriteLine("リンゴが含まれています");
}

直感的で読みやすいコードになるのが魅力。

大文字・小文字を無視して検索する方法

Contains大文字・小文字を区別します。

fruits.Contains("APPLE"); // false

区別したくない場合は、StringComparer.OrdinalIgnoreCase を使います。

using System.Linq;

string[] fruits = { "apple", "banana", "orange" };

bool exists = fruits.Contains("APPLE", StringComparer.OrdinalIgnoreCase);

Console.WriteLine(exists); // True

英字のバリデーションなど、実務でもよく使う書き方です。

オブジェクト配列でContainsを使う際の注意点

Contains は、内部的に Equals メソッド を使って比較します。

そのため、自作クラスの配列でContains を使う場合は、Equals と GetHashCode を正しく実装しておかないと意図した判定にならない ことがあります。

例:Personクラスの場合

class Person
{
    public string Name { get; set; }

    public override bool Equals(object obj)
    {
        return obj is Person p && Name == p.Name;
    }

    public override int GetHashCode()
    {
        return Name.GetHashCode();
    }
}

これにより、以下のようなコードで正しく判定できるようになります。

Person[] people =
{
    new Person { Name = "Taro" },
    new Person { Name = "Hanako" }
};

bool exists = people.Contains(new Person { Name = "Taro" });

Console.WriteLine(exists); // True

比較の仕組みを理解しておくと、オブジェクト配列を扱うときにハマりません。

Contains以外の選択肢

実務では、条件によってContains 以外が最適になる場合もあります。

用途ごとに軽く比較しておきます。

Array.Exists

条件付き検索をしたい場合はこちら

Array.Exists(fruits, x => x.StartsWith("a"));

Array.IndexOf

インデックスが欲しい場合に便利

int index = Array.IndexOf(fruits, "banana");

List<T>.Contains

リストの場合はこちらを使うだけ

LINQのAny()

条件付き検索の王道

fruits.Any(x => x == "banana");

柔軟で理解しやすいので実務でも多用されます。

実務でのおすすめパターンまとめ

最後に、現場でよく使うおすすめパターンをまとめておきます。

  • シンプルな一致判定 → Contains
  • 大文字小文字を無視 → StringComparer.OrdinalIgnoreCase
  • 条件付き検索 → Any()
  • オブジェクト配列 → Equals の仕組みを理解しておく
  • 配列ではなくリストで扱えるならリストの方が扱いが楽なことが多い

特に入力チェックでは Contains の出番が多いので、
「まず Contains で書けるか?」と考えるクセをつけておくとコードがシンプルになります。

まとめ

Contains は、配列の中に特定の値が存在するかを判定する非常に便利なメソッドです。

  • 基本的な一致判定が簡単
  • 大文字小文字の制御も可能
  • オブジェクト配列でも使える(Equals 実装が必要)
  • 条件次第では Any など他の選択肢も有効

配列の検索で迷ったときは、まず Contains を活用してみてください。

#エンジニアとして、もっと自分の力を活かしたいあなたへ

「このまま今の職場にいて、成長できるんだろうか?」

C#を使っている方なら、一度はそう感じたことがあるかもしれません。

実は今、C#/.NETエンジニアの市場価値は高まっており
年収アップ・フルリモート・自社開発企業など、選べる選択肢は確実に増えています。

もし今後、C#を活かして働きたい、あるいは開発現場で経験を積みたいとお考えなら…
自分に合った転職サービスを早めに知っておくことが大きな武器になります。

現役エンジニアからのサポート付き・無料で学べるスクール・社内SE特化の求人など、
転職支援サービスを厳選したまとめ記事をこちらで紹介しています。

ここまで読んでいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

沖縄出身のエンジニアです。IT業界で5年以上の経験があり、主にC#やPHPを使って開発を行ってきました。新しい技術にも興味があり、日々学びながらスキルアップを目指しています。

コメント

コメントする


Warning: Trying to access array offset on false in /home/c5378481/public_html/nankurunikki.com/wp-content/plugins/siteguard/really-simple-captcha/siteguard-really-simple-captcha.php on line 353

CAPTCHA


目次