1. リストとは?
C#におけるリストは、サイズが動的に変更されることを特徴とする、一連のオブジェクトを保持するデータ構造です。
リストは非常に柔軟性が高く、データの追加、挿入、削除が簡単に行えるため、多くのプログラムで頻繁に使用されます。リストの操作を熟知することは、C#プログラミングの基本ともいえるでしょう。
KindleUnlimited会員であれば、全ての本をご覧頂けます。 Linqを理解すれば、C#プログラミングの世界が変わる 第1版
2. リストの作成
C#でリストを作成するには、System.Collections.Generic名前空間のList<T>クラスを使用します。
以下は、整数を格納するリストを作成する例です。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
using System; using System.Collections.Generic; class Program { static void Main() { List<int> numbers = new List<int>(); Console.WriteLine("リストが作成されました!"); } } |
出力結果
リストが作成されました!
3. リストへの要素の追加、挿入
リストへの要素の追加は、AddメソッドやAddRangeメソッド、Insertメソッドを使用します。
Addメソッドは1つの要素をリストの末尾に追加します。AddRangeメソッドは複数の要素をリストの末尾に追加する際に使用し、Insertメソッドは指定した位置に要素を挿入します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System; using System.Collections.Generic; class Program { static void Main() { List<int> numbers = new List<int>(); numbers.Add(1); // 1つの要素を追加 numbers.AddRange(new int[] {2, 3, 4}); // 複数の要素を追加 numbers.Insert(1, 99); // インデックス1の位置に99を挿入 foreach (int num in numbers) { Console.WriteLine(num); } } } |
出力結果
1 99 2 3 4
4. リストからの要素の取得
リストの要素を取得するには、インデックスを使用します。
インデックスは0から開始し、リストの要素数-1までの数字で、特定の位置の要素を指すことができます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 |
using System; using System.Collections.Generic; class Program { static void Main() { List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" }; Console.WriteLine("First fruit: " + fruits[0]); // インデックスを使用して要素を取得 } } |
出力結果
First fruit: Apple
5. リストからの要素の削除
リストから要素を削除する際には主に3つのメソッド、Removeメソッド、RemoveAtメソッド、およびClearメソッドを利用します。それぞれのメソッドには特有の用途と動作があります。
5.1 Removeメソッド
Removeメソッドは、指定した要素をリストから削除します。
ソースコード例 (Remove)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.Collections.Generic; class Program { static void Main() { List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" }; fruits.Remove("Banana"); foreach (string fruit in fruits) { Console.WriteLine(fruit); } } } |
出力結果
Apple Cherry
5.2 RemoveAtメソッド
RemoveAtメソッドは、指定したインデックスの要素をリストから削除します。
ソースコード例 (RemoveAt)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.Collections.Generic; class Program { static void Main() { List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" }; fruits.RemoveAt(1); foreach (string fruit in fruits) { Console.WriteLine(fruit); } } } |
出力結果
Apple Cherry
5.3 Clearメソッド
Clearメソッドは、リストのすべての要素を削除し、リストを空にします。
ソースコード例 (Clear)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System; using System.Collections.Generic; class Program { static void Main() { List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" }; fruits.Clear(); Console.WriteLine("リストの要素数: " + fruits.Count); } } |
出力結果
リストの要素数: 0
5.4 RemoveRangeメソッド
RemoveRangeメソッドは、指定したインデックスから指定した数の要素をリストから削除します。
ソースコード例 (RemoveRange)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System; using System.Collections.Generic; class Program { static void Main() { List<string> fruits = new List<string> { "Apple", "Banana", "Cherry", "Date", "Fig" }; fruits.RemoveRange(1, 3); foreach (string fruit in fruits) { Console.WriteLine(fruit); } } } |
出力結果
Apple Fig
6. リストの要素を並べ替え
Sortメソッドを使用して、リストの要素を昇順や降順に並べ替えることができます。
ソースコード例 (Sortメソッド)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System; using System.Collections.Generic; class Program { static void Main() { List<int> numbers = new List<int> { 5, 2, 8, 1, 3 }; numbers.Sort(); // 昇順 Console.WriteLine("昇順:"); foreach (int number in numbers) { Console.WriteLine(number); } numbers.Reverse(); // 降順 Console.WriteLine("\n降順:"); foreach (int number in numbers) { Console.WriteLine(number); } } } |
出力結果
昇順: 1 2 3 5 8 降順: 8 5 3 2 1
7. リストの要素を全取得
リストに格納されている要素を取得する基本的な方法として、foreachループを利用します。
foreachループは、コレクション内の各要素を、コレクションの最初から最後まで順に処理します。それでは、実際にforeachループを利用してリストから要素を取得する具体例を見てみましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; using System.Collections.Generic; class Program { static void Main() { // リストの作成 List<string> fruits = new List<string>() { "Apple", "Banana", "Cherry", "Date", "Fig" }; // リストの要素を全取得 Console.WriteLine("Fruits:"); foreach (string fruit in fruits) { Console.WriteLine(fruit); } } } |
出力結果
Fruits: Apple Banana Cherry Date Fig
上記のコードでは、最初に文字列型のリストfruitsを作成しています。次に、foreachループを使ってリストfruitsの各要素を順番に取り出し、コンソールに出力しています。
これによって、リストに格納されているすべての要素を順番に表示することができました。
そうですね、サルモリさん!特に、要素の数が多い時や、インデックス番号を意識せずに要素を取り出したいときに、foreachループは非常に便利です。繰り返し処理を手軽に実装することができるので、コードがスッキリとして読みやすくなりますね。
8. リスト内の要素を検索
リスト内の要素の検索には、主にContainsメソッドとFindメソッドが利用されます。
8.1 Containsメソッド
Containsメソッドは、リストに指定した要素が存在するかどうかを確認するために使用されます。
ソースコード例 (Containsメソッド)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; using System.Collections.Generic; class Program { static void Main() { List<string> fruits = new List<string> { "Apple", "Banana", "Cherry" }; if (fruits.Contains("Banana")) { Console.WriteLine("Banana is in the list!"); } else { Console.WriteLine("Banana is not in the list."); } } } |
出力結果
Banana is in the list!
8.2 Findメソッド
Findメソッドは、指定した条件に一致する要素をリストから探し出すために使用されます。
ソースコード例 (Findメソッド)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System; using System.Collections.Generic; class Program { static void Main() { List<int> numbers = new List<int> { 5, 2, 8, 1, 3 }; int found = numbers.Find(item => item > 3); Console.WriteLine("First number greater than 3: " + found); } } |
出力結果
First number greater than 3: 5
これにより、リストの要素の取得や検索に関する基本的な方法を学ぶことができました。
まとめ
このガイドを通じて、C#におけるList<T>クラスを使ったリストの基本的な操作方法について学びました。
- リストの作成: Listクラスを使って、要素を動的に格納するコレクションを作成しました。
- 要素の追加: Add、AddRange、Insertメソッドを利用して、リストに新しい要素を追加しました。
- 要素のアクセス: インデックスを使用してリストから要素を取得し、また、インデックスやForeachを使用して要素を表示しました。
- 要素の削除: Remove、RemoveAt、RemoveRange、Clearメソッドを使用して、リストから要素を削除しました。
- 要素の並べ替え: Sortメソッドを利用してリストの要素を昇順や降順に並べ替えました。
- 要素の取得: Foreachループを利用してリストの要素を全て取得しました。
- 要素の検索: Contains、Findメソッドを利用して、リスト内の要素を検索しました。
これらの基本的な操作をマスターすることで、リストを効果的に使用して、コードの柔軟性とダイナミズムを高めることができます。特にデータの集合を取り扱う際や、データベースとのインタラクションをプログラムする際に、これらのテクニックは非常に有用です。
これらの基本をベースに、更にC#のコレクションやLINQといった高度なテクニックも学ぶことで、より多様で高度なデータ処理が可能になります。
他のリストのメソッドはコチラ
-
【C# sharp】リストのメソッドを徹底解説! IndexOf、ToArray、TrimExcess、Reverse、AsReadOnly、BinarySearchメソッド編!
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 C#リスト操 ...
続きを見る