English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# List(リスト)

List<T>は強いタイプのオブジェクトの集合であり、インデックスを通じてアクセスでき、リストのソート、検索、および修正に使用されるメソッドを持ちます。それはSystem.Collection.Generic名前空間のArrayListの汎用版です。

List<T>の特性

  • List<T>はArrayListと同等であり、IList<T>を実装しています。

  • それはSystem.Collection.Generic名前空間下にあります。

  • List<T>は指定されたタイプの要素を含むことができます。それはコンパイル時のタイプチェックを提供し、バインディングを実行しません。/箱を開ける、それは汎用のものだから。

  • Add()、AddRange()メソッドまたはcollectionを使用して追加できます。-initializer(コレクション初期値設定子)文法で要素を追加

  • インデックスを介して要素にアクセスできます、例えばmyList[0]。インデックスは0から始まります。

  • List<T>はArrayListよりも実行速度が速く、エラーが少ないです。

Listの作成

List<T>はジェネリックコレクションであり、したがって、格納できるデータのデータ型の型引数を指定する必要があります。以下の例では、リストの作成と要素の追加方法が示されています。

List<int> primeNumbers = new List<int>();
primeNumbers.Add(1); // add()メソッドを使用して要素を追加
primeNumbers.Add(3);
primeNumbers.Add(5);
primeNumbers.Add(7);
var cities = new List<string>();
cities.Add("New York");
cities.Add("London");
cities.Add("Mumbai");
cities.Add("Chicago");
cities.Add(null);// 参照型リストはnullを許可します
//collection-initializer文法で要素を追加
var bigCities = new List<string>()
                    {
                        "New York",
                        "London",
                        "Mumbai",
                        "Chicago"                    
                    });

上記の例では、

List<int> primeNumbers = new List<int>();

int型のリストを作成。同様に、citiesおよびbigcityはstring型のListです。add()メソッドやコレクション初期値設定子を使用して、リストに要素を追加できます。

コレクション初期値設定子(collection-initializer)文法でカスタムクラスの要素を追加。以下の例では、List<Student>にStudentクラスのオブジェクトを追加しています。

var students = new List<Student>() { 
                new Student(){ Id = 1, Name="Bill"},
                new Student(){ Id = 2, Name="Steve"},
                new Student(){ Id = 3, Name="Ram"},
                new Student(){ Id = 4, Name="Abdul"
            });

リストに配列を追加

AddRange()メソッドを使用して、配列や別の集合のすべての要素をListに追加します。

AddRange()のシグネチャ:

 void AddRange(IEnumerable<T> collection)
string[] cities = new string[3]{ "Mumbai", "London", "New York" };
var popularCities = new List<string>();
// リストに配列を追加
popularCities.AddRange(cities);
var favouriteCities = new List<string>();
// リストを追加 
favouriteCities.AddRange(popularCities);

リストにアクセス

インデックス、for/foreachループとLINQクエリを使用してリストにアクセスします。リストのインデックスは0から始まります。インデックスを括弧内に渡して単一のリスト要素にアクセスします。配列と同様にforeachまたはforループを使用してList<T>コレクションをイテレートします。

List<int> numbers = new List<int>() { 1, 2, 5, 7, 8, 10 });
Console.WriteLine(numbers[0]); // 版画1
1] // 版画2
2] // 版画5
3] // 版画7
// 使用foreach LINQメソッド
numbers.ForEach(num => Console.WriteLine(num + ", "));//印刷1、2、5、7、8、10、
// 使用forループ
for(int i = 0; i < numbers.Count; i++)
    Console.WriteLine(numbers[i]);

リストにLINQを使用する

List<T>はIEnumerableインターフェースを実装しています。したがって、リストをクエリするためにLINQクエリ文法またはメソッド文法を使用できます。以下のように示されます。

var students = new List<Student>() { 
                new Student(){ Id = 1, Name="Bill"},
                new Student(){ Id = 2, Name="Steve"},
                new Student(){ Id = 3, Name="Ram"},
                new Student(){ Id = 4, Name="Abdul"
            });
//Billという名前の全ての学生を取得する
var result = from s in students
	     where s.Name == "Bill"
	     select s;
foreach(var student in result)
    Console.WriteLine(student.Id + " + student.Name);

リスト(List)に要素を挿入する

このInsert()メソッドを使用して、List<T>指定のインデックス位置に要素を挿入します。

Insert() サイン:

void Insert(int index, T item);
var numbers = new List<int>(){ 10, 20, 30, 40 };
numbers.Insert(1, 11);// 最初のインデックスに挿入11、10その後。
foreach (var num in numbers)
    Console.Write(num);

リスト(List)から要素を削除

Remove() メソッドを使用して、List<T> 集合に最初に出现する指定された要素を削除します。RemoveAt() メソッドを使用して指定されたインデックスから要素を削除します。指定されたインデックスに要素がない場合、ArgumentOutOfRangeException をスローします。

Remove() シグネチャ

 bool Remove(T item)

RemoveAt() シグネチャ

void RemoveAt(int index)
var numbers = new List<int>(){ 10, 20, 30, 40, 10 });
numbers.Remove(10); // リストから削除10
numbers.RemoveAt(2); //第3つの要素(インデックスは0から始まる)を削除します
//numbers.RemoveAt(10); //ArgumentOutOfRangeException をスローします
foreach (var el in intList)
    Console.Write(el); // 出力 20 30

リスト(List)の要素を確認します

Contains() メソッドを使用して、要素が List<T> に存在するかどうかを確認します。

var numbers = new List<int>(){ 10, 20, 30, 40 };
numbers.Contains(10); // true を返します
numbers.Contains(11); // false を返します
numbers.Contains(20); // true を返します

List <T> クラスの階層構造

以下の図は List<T> の階層構造を説明しています。

List <T> クラスの属性とメソッド

以下に重要な List<T> クラスの属性とメソッドを示します:

属性使い方
Items指定されたインデックスの要素を取得または設定します。
CountList <T> に存在する要素の総数を返します。
メソッド使い方
AddList <T> の末尾に要素を追加します。
AddRange指定された集合の要素を List <T> の末尾に追加します。
BinarySearch要素を検索し、その要素のインデックスを返します。
ClearList <T> からすべての要素を削除します。
Contains指定された要素が List <T> に存在するかどうかを確認します。
Find指定された述語関数に基づいて最初の要素を検索します。
ForeachList <T> を巡回します。
InsertList <T>の指定されたインデックス处に要素を挿入します。
InsertRange指定されたインデックス处に別の集合の要素を挿入します。
Remove指定された要素の最初の出现を削除します。
RemoveAt指定されたインデックス处的要素を削除します。
RemoveRange指定された条件に一致するすべての要素を削除します。
Sortすべての要素に対してソートします。
TrimExcess実際の要素数に容量を設定します。
TrueForAll指定された条件に一致するかどうかをList <T>の各要素に対して確認します。