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

C#でArrayListに実際に含まれている要素数を取得する方法

C#のArrayListに実際に含まれている要素の数を取得するには、Countプロパティを使用します。Countプロパティは、リストに現在格納されている要素の実際の個数を返します。

なお、ArrayListにはよく似た名前のCapacityプロパティも存在します。Capacityは内部で確保されている「格納可能な容量」を表すため、実際の要素数(Count)とは必ずしも一致しない点に注意してください。

サンプルコード

using System;
using System.Collections;
public class Demo {
   public static void Main(String[] args){
      ArrayList list1 = new ArrayList();
      list1.Add("A");
      list1.Add("B");
      list1.Add("C");
      list1.Add("D");
      list1.Add("E");
      list1.Add("F");
      list1.Add("G");
      list1.Add("H");
      list1.Add("I");
      Console.WriteLine("Elements in ArrayList1...");
      foreach (string res in list1){
         Console.WriteLine(res);
      }
      ArrayList list2 = new ArrayList();
      list2.Add("A");
      list2.Add("B");
      list2.Add("C");
      list2.Add("D");
      list2.Add("E");
      list2.Add("F");
      list2.Add("G");
      list2.Add("H");
      list2.Add("I");
      Console.WriteLine("Elements in ArrayList2...");
      foreach (string res in list2){
         Console.WriteLine(res);
      }
      ArrayList list3 = new ArrayList();
      Console.WriteLine("Current capacity of ArrayList3: " + list3.Capacity);
      list3 = list2;
      Console.WriteLine("Current capacity of ArrayList3 (Updated) " + list3.Capacity);
      Console.WriteLine("Is ArrayList3 equal to ArrayList2? = "+list3.Equals(list2));
      Console.WriteLine("Count of elements in ArrayList2 = " + list2.Count);
      list2.Clear();
      Console.WriteLine("Count of elements in ArrayList2 (Updated) = " + list2.Count);
  }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Elements in ArrayList1...
A
B
C
D
E
F
G
H
I
Elements in ArrayList2...
A
B
C
D
E
F
G
H
I
Current capacity of ArrayList3: 0
Current capacity of ArrayList3: 16
Is ArrayList3 equal to ArrayList2? = True
Count of elements in ArrayList2 = 9
Count of elements in ArrayList2 (Updated) = 0

コードのポイント

  • list3 = list2; では、新しいリストを作成しているのではなく、list2と同じオブジェクトへの参照をlist3に代入しています。そのため、list3のCapacityはlist2と同じ値(16)になります。
  • Equalsメソッドの比較結果がTrueになるのは、両者が同一のインスタンスを参照しているためです。
  • Clearメソッドを呼び出すとすべての要素が削除され、Countプロパティの値は0になります。ただし、確保済みの容量(Capacity)自体はすぐには縮小されない場合があります。

別のサンプルコード

続いて、要素追加後のCapacityプロパティの値を確認する例を見てみましょう。

using System;
using System.Collections;
public class Demo {
   public static void Main(String[] args){
      ArrayList list1 = new ArrayList();
      list1.Add("A");
      list1.Add("B");
      list1.Add("C");
      list1.Add("D");
      list1.Add("E");
      list1.Add("F");
      list1.Add("G");
      list1.Add("H");
      list1.Add("I");
      Console.WriteLine("Current capacity of ArrayList1: " + list1.Capacity);
      Console.WriteLine("Elements in ArrayList1...");
      foreach (string res in list1){
         Console.WriteLine(res);
      }
      ArrayList list2 = new ArrayList();
      list2.Add("A");
      list2.Add("B");
      list2.Add("C");
      list2.Add("D");
      list2.Add("E");
      list2.Add("F");
      list2.Add("G");
      list2.Add("H");
      list2.Add("I");
      Console.WriteLine("Elements in ArrayList2...");
      foreach (string res in list2){
         Console.WriteLine(res);
      }
      ArrayList list3 = new ArrayList();
      list3 = list2;
      Console.WriteLine("Is ArrayList3 equal to ArrayList2? = "+list3.Equals(list2));
  }
}

出力結果

Current capacity of ArrayList1: 16
Elements in ArrayList1...
A
B
C
D
E
F
G
H
I
Elements in ArrayList2...
A
B
C
D
E
F
G
H
I
Is ArrayList3 equal to ArrayList2? = True

このように、要素を9つ追加した時点でもCapacityは16となっており、ArrayListは必要に応じて容量を自動的に拡張する仕組みを持っています。したがって、「リストにいくつの要素が入っているか」を知りたい場合は、Capacityではなく常にCountプロパティを参照するようにしましょう。

  1. C#のArrayListからすべての要素を削除する方法

    C#のArrayListからすべての要素を削除するには、Clear()メソッドを使用します。Clear()メソッドを呼び出すと、コレクション内の全要素が削除され、要素数(Count)は0になります。 例1:ArrayListの全要素を削除する using System; using System.Collections; public class Demo { public static void Main(String[] args){ ArrayList list1 = new ArrayList(); list1.Add(A);

  2. C#でListの要素範囲を取得する方法:GetRange()メソッドの使い方

    C#のListで特定の範囲の要素を取得するには、GetRange() メソッドを使用します。このメソッドは、指定したインデックス位置から指定した数の要素を取り出し、新しいリストとして返します。 GetRange() メソッドの基本構文 public List<T> GetRange(int index, int count); index:取得を開始する要素のインデックス(0から始まります) count:取得する要素の数 リストの作成と要素の追加 まず、リストを作成して要素を追加します。 List<int> arr1 = new List<int>();