※ この記事にはアフィリエイトリンクが含まれます
C#で配列の代わりに便利なコレクションを使いたいと悩んでいませんか?
- Listの宣言や初期化の書き方がわからない
- 要素の追加・削除・検索の基本操作で迷う
- リストの性能や使いどころがわからず不安になる
結論から言うと、C# List 使い方は基本を押さえれば非常に扱いやすく、生産性が大きく向上します。
- 宣言と初期化を理解する
- 要素操作(Add, Remove, Insert, Clear)を覚える
- 検索やソート、LINQで便利に扱う
この記事では、初心者向けにC# List 使い方を丁寧に解説します。
基礎から実践的なコード例、よくあるエラー対処まで取り上げるので、この記事を読むことでListの基本操作を自信を持って使えるようになります。
Listとは何か(要点)
まずはListの概要を押さえましょう。
Listは可変長のコレクションで、要素数を動的に変更できます。
配列と異なり、要素の追加や削除が簡単に行えます。
なぜListを使うのか(理由)
Listを使う利点は主に可読性と柔軟性です。
配列よりも操作メソッドが豊富で、コードが簡潔になります。
また、ジェネリクスに対応しており型安全に扱える点も重要です。
基本的な宣言と初期化(使い方の基礎)
Listの宣言はとてもシンプルです。
以下は整数型のListを宣言して初期化する例です。
// using System.Collections.Generic;
List<int> numbers = new List<int>();初期値を与えて作ることもできます。
List<string> names = new List<string> { "Alice", "Bob", "Charlie" };配列からListを作る
配列をListに変換するのも簡単です。
int[] arr = { 1, 2, 3 };
List<int> listFromArray = new List<int>(arr);基本操作:追加・削除・取得(実践)
ここでは頻出するメソッドを見ていきます。
まず要素の追加はAddメソッドを使います。
numbers.Add(10);
numbers.Add(20);特定の位置に挿入したいときはInsertを使います。
numbers.Insert(1, 15); // インデックス1の位置に15を挿入要素の削除はRemoveやRemoveAtが使えます。
numbers.Remove(15); // 値を指定して削除
numbers.RemoveAt(0); // インデックスで削除
numbers.Clear(); // 全て削除要素の取得はインデクサを使います。
int first = numbers[0];存在確認と検索
要素の存在確認はContainsが便利です。
if (names.Contains("Bob")) {
// Bobが含まれる
}条件に合う要素を検索するにはFindやFindAll、FindIndexがあります。
string found = names.Find(x => x.StartsWith("A"));
List<string> aNames = names.FindAll(x => x.Length == 3);Listのソートと並べ替え
ListはSortメソッドで簡単に並べ替えできます。
numbers.Sort(); // 昇順
numbers.Sort((a, b) => b.CompareTo(a)); // 降順複雑な並べ替えにはComparisonやIComparerを利用すると柔軟です。
パフォーマンス上の注意(理由)
Listは内部で配列を使っているので、追加時に容量が足りないと再割当が発生します。
大量の要素を追加する場合はあらかじめCapacityを設定しておくと高速になります。
List<int> bigList = new List<int>(10000);削除操作が頻繁な場合はLinkedListや他のコレクションも検討してください。
LINQと組み合わせた便利な使い方(応用)
LINQを使うとListの操作がさらに強力になります。
FilterやMap、Groupなどの操作を簡潔に記述できます。
using System.Linq;
var even = numbers.Where(n => n % 2 == 0).ToList();
var namesSorted = names.OrderBy(n => n).ToList();実用的なサンプル:Todoリストの実装(具体例)
簡単なTodoリストの例でListの使い方を確認しましょう。
public class Todo {
public int Id { get; set; }
public string Title { get; set; }
}
List<Todo>; todos = new List<Todo>;();
// 追加
todos.Add(new Todo { Id = 1, Title = "買い物" });
// 更新
var t = todos.Find(x => x.Id == 1);
if (t != null) t.Title = "買い物に行く";
// 削除
todos.RemoveAll(x => x.Id == 1);
このようにクラスのリストを扱うことで実務的なデータ管理が簡単になります。
よくあるエラーと対処法(原因と解決)
初心者がつまずきやすいポイントと解決方法をまとめます。
- IndexOutOfRangeException:存在しないインデックスを参照している。Countを確認する。
- NullReferenceException:List自体がnullの可能性。newで初期化する。
- パフォーマンス低下:大量のInsertやRemoveが頻繁にある場合は別のデータ構造を検討する。
具体的には、インデックス参照前に必ずCountチェックを行う習慣をつけましょう。
if (numbers.Count > 0) {
var v = numbers[0];
}
ベストプラクティスとTips(まとめ)
最後に実務で役立つポイントを短くまとめます。
- 初期容量を見越してCapacityを設定する
- 頻繁に削除するなら別データ構造を検討する
- LINQを活用してコードを簡潔にする
- ジェネリクスで型安全に保つ
これらを意識することで、C# List 使い方がより効果的になります。
まとめ(結論の再提示)
ここまでで、C#のListの基本から応用までを見てきました。
結論として、Listは可変長コレクションの基本であり、正しく使えば非常に強力です。
この記事で紹介した宣言・追加・削除・検索・ソート・LINQの使い方を実際に試して、C# List 使い方を自分のものにしてください。

エンジニアとして、もっと自分の力を活かしたいあなたへ
「このまま今の職場にいて、成長できるんだろうか?」
C#を使っている方なら、一度はそう感じたことがあるかもしれません。
実は今、C#/.NETエンジニアの市場価値は高まっており、
年収アップ・フルリモート・自社開発企業など、選べる選択肢は確実に増えています。
もし今後、C#を活かして働きたい、あるいは開発現場で経験を積みたいとお考えなら…
自分に合った転職サービスを早めに知っておくことが大きな武器になります。
現役エンジニアからのサポート付き・無料で学べるスクール・社内SE特化の求人など、
転職支援サービスを厳選したまとめ記事をこちらで紹介しています。

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