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

C#の配列から要素を削除する方法【サンプルコード付きで解説】

C#の配列は固定長のため、要素を直接「削除」することはできません。そこで一般的に用いられるのが、削除したい位置以降の要素を一つ前へずらす(シフトする)ことで、実質的にその要素を取り除く手法です。

基本的な考え方:要素をシフトして削除する

まず、次のように5つの要素を持つ配列を用意します。

int[] arr = new int[5] {35, 50, 55, 77, 98};

たとえば2番目の位置(pos = 2、つまり arr[1])の要素「50」を削除したい場合は、その位置より後ろにある要素をすべて一つずつ前に移動させます。

// 削除位置以降の要素を前方へシフト
for (i = pos - 1; i < 4; i++) {
    arr[i] = arr[i + 1];
}

この処理により、削除対象だった要素は後ろの要素で上書きされ、配列全体が一つ分だけ詰まった状態になります。

完全なサンプルコード

削除前後の配列の中身をコンソールに表示する、動作確認用の完全なコードがこちらです。

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

namespace Demo {
    class Program {
        static void Main() {
            int i = 0;
            int pos;
            int[] arr = new int[5] {35, 50, 55, 77, 98};

            Console.WriteLine("削除前の要素:");
            for (i = 0; i < 5; i++) {
                Console.WriteLine("Element[" + (i) + "]: " + arr[i]);
            }

            // 2番目の位置(arr[1])の要素を削除すると仮定
            pos = 2;
            // 要素を前方へシフト
            for (i = pos - 1; i < 4; i++) {
                arr[i] = arr[i + 1];
            }

            Console.WriteLine("削除後の要素:");
            for (i = 0; i < 4; i++) {
                Console.WriteLine("Element[" + (i + 1) + "]: " + arr[i]);
            }
            Console.WriteLine();
        }
    }
}

実行結果

削除前の要素:
Element[0]: 35
Element[1]: 50
Element[2]: 55
Element[3]: 77
Element[4]: 98
削除後の要素:
Element[1]: 35
Element[2]: 55
Element[3]: 77
Element[4]: 98

実行結果を見ると、2番目だった要素「50」が取り除かれ、それ以降の要素が一つずつ前に詰められていることがわかります。ただし、配列自体のサイズは変わらないため、末尾には余分な領域が残る点には注意が必要です。

補足:頻繁に削除するならList<T>が便利

要素の追加・削除を頻繁に行う場合は、固定長の配列ではなく可変長コレクションの List<T> を使うのがおすすめです。RemoveAt() メソッドを呼び出すだけで、指定インデックスの要素を簡単に削除できます。

var list = new List<int> {35, 50, 55, 77, 98};
list.RemoveAt(1); // インデックス1の要素「50」を削除

用途に応じて、配列のシフト処理と List<T> を使い分けるとよいでしょう。

  1. Swiftの配列から特定の要素を削除する方法を徹底解説

    Swiftで配列から特定の要素を削除したい場合、いくつかの方法があります。この記事では、実際のコード例を交えながら、代表的な2つの方法をわかりやすく解説します。 まずは、String型の配列を用意しましょう。 var arrayOfString = [a,b,c,f] この配列を使って、以下の2つの方法で特定の要素を削除していきます。 方法1:filterメソッドを使う Swiftの配列にはfilterメソッドが標準で用意されています。これは、指定した条件に基づいて要素を絞り込み、新しい配列として返すメソッドです。削除したい要素を条件から除外することで、実質的にその要素を取り除くことができます

  2. AndroidでArrayBlockingQueueから要素を削除する方法を解説!サンプルコード付き

    本記事では、Androidアプリ開発においてArrayBlockingQueueから特定の要素を削除する方法を、実際のサンプルコードとともにわかりやすく解説します。 ArrayBlockingQueueとは? 実装手順に入る前に、ArrayBlockingQueueについて簡単におさらいしておきましょう。ArrayBlockingQueueは、内部に配列を持つスレッドセーフなブロッキングキューで、要素はFIFO(First In First Out:先入れ先出し)方式で管理されます。つまり、最初に追加された要素が最も長くキューに残り、最後に追加された要素が最も短い期間しか残りません。 実装