C# のリストの AddRange 関数

Saad Aslam 2023年10月12日
  1. C# における AddRange() 関数の重要性
  2. C#AddRange() 関数を実装する
C# のリストの AddRange 関数

この記事では、AddRange() 関数と C# プログラミング言語で実行されるその操作のデモを提供します。

C# における AddRange() 関数の重要性

リストの AddRange メソッドを使用すると、コンポーネントのコレクション全体を一度に追加できます。 特定のコレクションからリストの最後に項目を追加する場合、C# プログラミング言語の AddRange 関数が使用されます。

Add on List メソッドを継続的に使用する面倒な foreach ループに取って代わることができます。 AddRange は、配列や別のリストだけでなく、その他の IEnumerable コレクションも送信できます。

InsertRange() は上記と同様のアクションを実行しますが、引数として開始点も必要です。 まず、C# プログラミング言語のList基本クラス ライブラリで使用できるAddRange()インスタンス メソッドを見ていきます。

InsertRange() は AddRange() 関数を実装した関数です。 InsertRange() のラッパー メソッドである AddRange() は、ターゲット位置として 0 の宛先位置を持ちます。

AddRange メソッドは、いくつかの重要な点で配列とは異なります。 リストのサイズは動的に増加する場合がありますが、配列はこの方法で拡張することはできません。

System.Collections.Generic 名前空間には、List クラスの AddRange(T) 関数が含まれています。 この関数は、必須のパラメーターと見なされるパラメーター collection を受け取る必要があります。

System.Collections.Generic.IEnumerableT> は、collection 引数の値の型です。 ListT> の最後にアイテムを追加する必要があるコレクションは、IEnumerableT> で表されます。

コレクション コンポーネントが格納される順序は、ListT> によって保持されます。 次の説明は、関数のプロトタイプを示しています。

public void AddRange(System.Collections.Generic.IEnumerable<T> collection);

C#AddRange() 関数を実装する

これですべてが片付いたので、それらをよりよく理解するためにいくつかの例を見てみましょう。 これは、AddRange() 関数がどのように目的を達成するかを示す最も基本的な例です。

まず、整数のリストを作成し、それらの変数に l という名前を付けます。

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

整数のリストを生成したら、次のステップは、生成したばかりのリストにいくつかの項目を追加することです。

l.Add(1);
l.Add(2);
l.Add(3);
l.Add(4);

次のステップでは、リストと同じタイプの配列 (サイズ 4 の整数型の配列) を作成し、配列を埋めます。

int[] arr = new int[4];
arr[0] = 5;
arr[1] = 6;
arr[2] = 7;
arr[3] = 8;

その後、リスト lAddRange() メソッドを使用し、引数として、プロセスの前半で構築した arr を提供します。

l.AddRange(arr);

私たちが持っているリストが表示されます。

foreach (int val in l) {
  Console.WriteLine(val);
}

各配列メンバーもリストに含まれていることがわかりました。

ソースコード

using System;
using System.Collections.Generic;

public class AddRangeFunction {
  public static void Main() {
    List<int> l = new List<int>();
    l.Add(1);
    l.Add(2);
    l.Add(3);
    l.Add(4);

    int[] arr = new int[4];
    arr[0] = 5;
    arr[1] = 6;
    arr[2] = 7;
    arr[3] = 8;

    l.AddRange(arr);

    foreach (int val in l) {
      Console.WriteLine(val);
    }
  }
}

出力:

1
2
3
4
5
6
7
8

別の例を次に示します。

using System;
using System.Collections.Generic;

public class AddRangeFunction {
  public static void Main() {
    List<int> l = new List<int>();
    int[] arr = new int[4];
    arr[0] = 5;
    arr[1] = 6;
    arr[2] = 7;
    arr[3] = 8;

    l.AddRange(arr);

    foreach (int val in l) {
      Console.WriteLine(val);
    }
  }
}

出力:

5
6
7
8

この場合、前の手順と同じ手順に従いました。 ただし、この特定の例では、リストには何もありませんでした。

私たちのリストの項目はチェックされていませんでした. 以前は空だったリストに配列を含めました。

この例は、空のリストにアイテムを追加できることを示しています。 出力を見ると、配列の値がリストに追加されていることがわかります。

新しい Count (現在の Count にコレクション サイズを加えたもの) が容量を超えているとします。 その場合、ListT> の容量は、追加の項目を収容するために内部配列を自動的に再割り当てすることによって増加します。

これは、新しい Count が容量より大きい場合に発生します。 新しいアイテムを追加する前に、以前の要素が最初に新しく作成された配列にコピーされます。

著者: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

関連記事 - Csharp List