C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のListコレクションでRemove・RemoveAt・RemoveRangeメソッドを使う方法

C#のList<T>コレクションには、要素を削除するための便利なメソッドがいくつか用意されています。本記事では、Remove()RemoveAt()RemoveRange()の3つのメソッドの使い方を、実際に動作するサンプルコードとともにわかりやすく解説します。

各メソッドの概要

  • Remove(T item):指定した値と一致する最初の要素を削除します。削除に成功するとtrue、失敗するとfalseを返します。
  • RemoveAt(int index):指定したインデックス位置にある要素を削除します。インデックスは0から始まります。
  • RemoveRange(int index, int count):指定した開始インデックスから、指定した個数分の要素をまとめて削除します。

Remove()メソッドとRemoveAt()メソッドの基本的な使い方

まず、操作対象となるリストを作成します。

List<string> myList = new List<string>() {
    "mammals",
    "reptiles",
    "amphibians",
    "vertebrate"
};

Remove()メソッドを使うと、指定した値を持つ要素をリストから削除できます。

myList.Remove("reptiles");

RemoveAt()メソッドを使うと、インデックス(位置)を指定して要素を削除できます。先頭の要素がインデックス0となる点に注意してください。

myList.RemoveAt(2);

完全なサンプルコード

以下は、Remove()メソッドとRemoveAt()メソッドを組み合わせた完全なサンプルコードです。

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
    static void Main() {
        List<string> myList = new List<string>() {
            "mammals",
            "reptiles",
            "amphibians",
            "vertebrate"
        };

        Console.WriteLine("初期のリスト:");
        foreach (string list in myList) {
            Console.WriteLine(list);
        }

        Console.WriteLine("\nRemove()メソッドを使用:");
        myList.Remove("reptiles");

        foreach (string list in myList) {
            Console.WriteLine(list);
        }

        Console.WriteLine("\nRemoveAt()メソッドを使用:");
        myList.RemoveAt(2);

        foreach (string list in myList) {
            Console.WriteLine(list);
        }
    }
}

このコードでは、まずRemove()メソッドで「reptiles」を削除し、その後RemoveAt()メソッドでインデックス2の要素(「vertebrate」)を削除しています。最終的にリストには「mammals」と「amphibians」だけが残ります。

RemoveRange()メソッドで複数の要素を一括削除する

続いて、RemoveRange()メソッドを使った例を見てみましょう。このメソッドは、開始インデックスと削除する要素数を指定することで、複数の要素を一度に削除できます。

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
    static void Main() {
        List<int> myList = new List<int>();
        myList.Add(5);
        myList.Add(10);
        myList.Add(15);
        myList.Add(20);
        myList.Add(25);
        myList.Add(30);
        myList.Add(35);

        Console.WriteLine("初期のリスト:");
        foreach (int list in myList) {
            Console.WriteLine(list);
        }

        // 最後の3要素を残して、それ以前の要素をすべて削除する
        int rem = Math.Max(0, myList.Count - 3);
        myList.RemoveRange(0, rem);

        Console.WriteLine("\n新しいリスト:");
        foreach (int list in myList) {
            Console.WriteLine(list);
        }
    }
}

この例では、Math.Max(0, myList.Count - 3)という式により、「最後の3要素を残して、それ以外をすべて削除する」という処理を実現しています。Countプロパティで現在の要素数を取得し、そこから3を引いた値を削除数としています。Math.Max()を使うことで、要素数が3未満の場合でも負の値が渡されて例外が発生するのを防いでいます。

まとめ

  • 特定の値を持つ要素を削除したい場合はRemove()を使う
  • インデックスを指定して1つの要素を削除したい場合はRemoveAt()を使う
  • 範囲を指定して複数の要素をまとめて削除したい場合はRemoveRange()を使う

用途に応じてこれらのメソッドを使い分けることで、C#でのリスト操作をより効率的に行えるようになります。

  1. 【保存版】Excelでドロップダウンリストの重複を削除する4つの方法

    大量のデータをMicrosoft Excelで扱っていると、ドロップダウンリストを作成したものの、リスト内に重複した値が含まれてしまい困ることがあります。実は、この重複を削除するのはとても簡単で、正しい手順を知っていれば作業時間と手間を大幅に節約できます。本記事では、Excelのドロップダウンリストから重複値を効率的に取り除くための4つの方法を、分かりやすい図解とともに詳しく解説します。 Excelのドロップダウンリストから重複を削除する4つの方法 ここでは、ある国がヨーロッパの3カ国に輸出した果物や野菜に関する情報が記録された大きなワークシートを例にします。データには商品名(Product

  2. Excelのドロップダウンリストから使用済み項目を自動的に削除する2つの方法

    Excelでデータの入力規則を扱っていると、同じ項目を二重に割り当ててしまうのを防ぐために、ドロップダウンリストから使用済みの項目を削除したい場面があります。たとえば、複数の従業員を異なるシフトに割り振る際、同一人物を複数回割り当てたくないケースが挙げられます。また、試合で選手を各ポジションに配置する際も、一人の選手を一つのポジションにしか割り当てられないという状況があります。こうした場合、ドロップダウンリストから一度選択した名前が自動的に消えてくれると非常に便利です。本記事では、Excelのドロップダウンリストから使用済み項目を削除する方法をわかりやすく解説します。 Excelでドロップダ