[C#]Listまとめ(追加 / 削除 / 取得 / 値のチェック)

C#

C#でListを使うことが増えてきたので、Listについてまとめてみました💡
Listの作成から追加・削除・ソート・存在チェックについて書いています。

動作確認はVisual Stadio for Macのコンソールアプリでやってみました。

Listを作成する

名前空間はSystem.Collections.Genericです!
使うときはここをusingします。
(using System.Collections.Generic; を文頭に書いておきます)

ListはList<T(型)>で宣言できます。
下記のように自作したクラスのインスタンスをリスト化することもできます。

public class Person
{
    string Name { set; get; }
    int Age { set; get; }
    DateTime Birthday { set; get; }
}

public static void Test()
{
    // --- リストの宣言 ---
    // 数値のリスト
    List<int> numbers = new List<int>();
    // 文字列のリスト
    List<string> userNames = new List<string>();

    // 自作クラスのリスト
    List<Person> peoples = new List<Person>();
}

Listにアイテムを追加する

Addメソッドで追加

ListのAddメソッドを使って、アイテムを入れるとリストの最後に追加されていきます。

List<string> fruits = new List<string>();
fruits.Add("apple");
fruits.Add("banana");
fruits.Add("lemon");

AddRangeメソッドで追加

アイテムを複数追加するときは、AddRangeメソッドを使います。
リストの最後に追加されます。

// apple, banana, lemonが入っていてAddRangeで入れたとき
fruits.AddRange(new List<string>() { "grape", "orange" });

// 結果:apple, banana, lemon, grape, orange

Listのアイテムを取り出す

Listの値はforeach文を使ってループさせて処理したり、
リストの番号を指定して取り出しましょう。

リストは0番目から数えます!
カギ括弧[]でアイテムの入っている配列番号を指定します。

List<string> fruits = new List<string>();
fruits.Add("apple");
fruits.Add("banana");

System.Console.WriteLine(fruits[0]); 
// 結果:apple

// ループで全アイテムを取り出す
foreach (var fruit in fruits)
{
    Console.WriteLine(fruit); 
}

// 結果
// apple
// banana

Listのアイテムを削除する

RemoveAtでアイテムを削除する

RemoveAtでアイテムの番号を引数で指定して削除します。
連続で使う場合はアイテムの配列位置がずれていくので注意が必要です。

下記の例だと、"apple", "banana", "lemon", "grape", "orange"が入っていて
0番目、2番目をRemoveAtで消しているので "banana", "grape", "orange" となりそうです。

ですが、アイテムの位置がずれるので”apple”を消した時点で
“banana”が0番目になって、2番目が”grape”になるので

結果が "banana", "lemon","orange" となります!

List<string> fruits = new List<string>();
fruits.AddRange(new List<string>() { "apple", "banana", "lemon", "grape", "orange" });

fruits.RemoveAt(0);
fruits.RemoveAt(2);

// 結果
// banana
// lemon
// orange

RemoveRangeで範囲を指定してアイテム削除

RemoveRangeで指定範囲のアイテムが削除できます。

指定の仕方は、
・1番目の引数:削除開始位置
・2番目の引数:削除する個数
になります。

下記のように"grape", "orange", "peach", "apple"が入っている場合は
0番目から2個消しているので、"peach", "apple"が残ります。

fruits.AddRange(new List<string>() { "grape", "orange", "peach", "apple" });
fruits.RemoveRange(0, 2);

RemoveAllで条件にあったアイテムを削除する

RemoveAllは引数にチェックするメソッドを記述します。
条件に一致したアイテムを全て削除します。

public static void Test()
{
   List<string> fruits = new List<string>();
   fruits.AddRange(new List<string>() { "grape", "orange", "peach", "apple" });
   fruits.RemoveAll(FruitsCheck);
}

private static bool FruitsCheck(string e)
{
    return e.Contains("ra");
}

上記のようにFruitsCheckを指定した場合、
Containsでアイテムに”ra”を含むものを探すようにしているので

"grape","orange" が削除されて
結果は "peach", "apple" となります。

Clearで全てのアイテムを削除する

Clearメソッドを呼び出すと、全てのアイテムが消えます!

List<string> fruits = new List<string>();
fruits.AddRange(new List<string>() { "grape", "orange", "peach", "apple" });

fruits.Clear();

Listに指定のアイテムがあるかチェックする

Containsで探す

Containsメソッドで値があるかチェックできます。
値が存在する場合はtrue、存在しない場合はfalseになります。

List<string> fruits = new List<string>();
fruits.AddRange(new List<string>() { "grape", "orange", "peach", "apple" });

if (fruits.Contains("orange"))
{
    Console.WriteLine("orangeがある");
}
// 結果
// orangeがある

コメント

タイトルとURLをコピーしました