C#のList型の使い方!要素の追加・削除・検索をわかりやすく解説
生徒
「C#でデータをたくさん保存して管理する方法はありますか?」
先生
「はい、C#にはList型というとても便利な仕組みがあります。これは、同じ種類のデータを順番に並べて管理できるコレクションのひとつです。」
生徒
「リストって、紙に項目を書き出すリストみたいなものですか?」
先生
「その通りです。例えば買い物リストのように、好きなものを追加したり削除したりできるイメージです。では基本的な使い方を見ていきましょう!」
1. List型とは?
C#のList型は、同じデータ型の要素を順番に管理できるコレクション型です。配列(array)と似ていますが、配列は要素数が固定なのに対して、Listは必要に応じて自由に増やしたり減らしたりできるのが大きな特徴です。
例えば「学生の名前」「商品の価格」「整数の点数」などを順番に管理したいときに便利です。
2. Listの宣言と初期化
まずはC#でListを使うための書き方を見てみましょう。
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
// 整数のリストを作成
List<int> numbers = new List<int>();
// 文字列のリストを作成
List<string> names = new List<string>();
}
}
このように、List<int>と書けば整数専用のリスト、List<string>と書けば文字列専用のリストを作ることができます。< >の中に扱いたい型を指定するのがポイントです。
3. 要素を追加する方法(Add)
リストにデータを追加するときは、Addメソッドを使います。買い物リストに新しい品物を書き加えるイメージです。
List<string> fruits = new List<string>();
fruits.Add("りんご");
fruits.Add("みかん");
fruits.Add("ぶどう");
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
りんご
みかん
ぶどう
このようにして、好きなだけデータを増やしていくことができます。
4. 要素を削除する方法(Remove / RemoveAt)
追加した要素を削除したい場合もあります。そのときに使うのがRemoveやRemoveAtです。
Remove("値")… 指定した値を削除RemoveAt(位置)… 指定した順番(インデックス)の要素を削除
List<string> fruits = new List<string>() { "りんご", "みかん", "ぶどう" };
// 値を指定して削除
fruits.Remove("みかん");
// 位置を指定して削除(0番目を削除)
fruits.RemoveAt(0);
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
ぶどう
リストは順番を覚えているので、削除した後は自動的に詰められて並び替えられます。
5. 要素を検索する方法(Contains / IndexOf)
リストの中に特定の要素があるかどうか調べたい場合はContainsを使います。また、位置を知りたい場合はIndexOfが便利です。
List<string> fruits = new List<string>() { "りんご", "みかん", "ぶどう" };
if (fruits.Contains("みかん"))
{
Console.WriteLine("みかんがあります!");
}
int index = fruits.IndexOf("ぶどう");
Console.WriteLine("ぶどうは " + index + " 番目にあります。");
みかんがあります!
ぶどうは 2 番目にあります。
Containsは「あるかどうか」、IndexOfは「何番目にあるか」を教えてくれる便利なメソッドです。
6. Listを使うメリット
List型を使うことで、以下のようなメリットがあります。
- データの追加や削除が自由にできる
- 検索や位置の確認が簡単にできる
- 要素の順番を保ちながら管理できる
- 繰り返し処理と相性が良いので、まとめて表示や計算がしやすい
まさに「柔軟に使える便利な箱」として、C#のプログラミングに欠かせない存在です。
まとめ
C#のList型は、初心者が最初に学ぶコレクションとして特に重要であり、配列とは違って自由に増やしたり減らしたりできる扱いやすさが大きな魅力であるため、実際の開発現場でも多用される基本的な仕組みとして理解しておくことがとても大切だといえる。今回の内容を振り返ると、まずList型の根本的な特徴として、同じ型のデータを順番に並べて管理できる柔軟性があり、Addでの追加、RemoveやRemoveAtでの削除、ContainsやIndexOfを使った検索など、実務でも頻繁に登場する操作が揃っているため、使い慣れることでデータ管理に対する理解が深まり、複数の情報をまとめて扱うプログラムが書きやすくなるという点が印象的である。 また、リストを使うメリットとして、順序が保たれた状態で操作できる点、要素数が自動的に変化する点、繰り返し処理と相性がよい点などが挙げられ、これらの特性を意識しながら設計するとデータの整理がしやすく、後からの変更にも柔軟に対応できる構造を作りやすくなるため、C#の基礎を学ぶ段階からListの扱いに慣れておくことは後の成長にも直結していく。 特に初心者にとって理解しておきたいのは、Listは「順番を保ちながら自由に変更できる箱」であるというイメージであり、削除すれば自動的に詰められ、追加すれば末尾に順番通り入るため、人間が普段使っているチェックリストや買い物リストと同じように自然に扱える点が魅力となっている。こうした特徴をつかむことで、Listそのものが単なる構文ではなく、現実の作業や思考と結びつけて理解できるようになる。 さらに、Listは応用範囲も広く、整数や文字列だけでなく、自分で定義したクラスを扱うこともできるため、学生一覧や注文データや商品リストなど、実践的な場面でも非常に役立つ存在となる。以下のようにクラスを入れたListを作ることも可能であり、Listの持つ拡張性の高さがよく分かる例となる。
class Student
{
public string Name { get; set; }
public int Score { get; set; }
}
List<Student> students = new List<Student>()
{
new Student(){ Name = "太郎", Score = 85 },
new Student(){ Name = "花子", Score = 92 }
};
foreach (var s in students)
{
Console.WriteLine(s.Name + ":" + s.Score);
}
このように、Listは単純な並びだけでなく、複雑なデータ構造を扱う際にも効果的に利用できるため、基礎を身につけておくことで、後にLINQやラムダ式と組み合わせた高度な処理にも進みやすくなる。今回学んだAddやRemove、IndexOfといった基本操作は、そのまま応用にもつながる重要な要素であり、慣れるほどスムーズに実装が進むはずである。 実際の開発では、ユーザー一覧の管理、注文の並び替え、ログデータの格納、検索機能の実装など、多くの場面でListが活躍するため、基本の使い方だけでなく「どのような場面で使うべきか」という設計面の考え方も育てておくとよい。順番が大切な処理や、可変的で柔軟な管理が必要な場合には特に効果的であるため、用途を考えながら使い分ける力をつけていくことが大切だといえる。 また今回の学びを通して、メソッドの役割を正しく理解し、実際に手を動かして試しながら身につけていくことが、Listに限らずC#全体の理解にもつながるため、覚えた知識を積極的に小さなサンプルで試す習慣をつけるとよい。総合すると、ListはC#の基礎を固めるうえで欠かせない重要なコレクションであり、扱い方を身につけることが今後のプログラム作成を大きく助けてくれるはずである。
生徒
「今日の内容でListがどれだけ便利なのかがよく分かりました。追加も削除も自由にできて、順番まで保ってくれるなんて、本当に使いやすい仕組みなんですね。」
先生
「そのとおりですね。C#を学ぶうえで最初に覚えるコレクションとして、とても実用的で応用しやすいので、基本操作をしっかり身につけておくと後の学習が一気に楽になりますよ。」
生徒
「RemoveとRemoveAtの違いも覚えやすかったです。検索もできるし、自分でも使いながら慣れていけそうな気がします。」
先生
「実際に書いて動かしてみると理解が深まりますから、ぜひ小さなサンプルでもどんどん試してみてください。Listはクラスを入れて管理することもできるので、応用するととても強力ですよ。」
生徒
「次はLINQや他のコレクションも学んでみたいです。今日のListの知識がきっと役立ちそうですね。」