[C#]配列(Array)の先頭に要素を追加するには?

C#

どうも、ちょげ(@chogetarou)です。

配列(Array)の先頭に要素を追加する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列(Array)の先頭に要素を追加する方法は、4つあります。

Array.Copy()

1つ目は、Array.Copy()を使う方法です。

まず、新しい配列を生成します。

配列の長さは、対象の配列のLengthプロパティに「+1」した値を指定します。

int[] result = new int[array.Length + 1];

生成した配列のインデックス「0」に、追加する要素を代入します。

result[0] = value;

次に、Array.Copy()を呼び出します。

Array.Copy()の第1引数に対象の配列、第2引数に0を指定します。

そして、Array.Copy()の第3引数に新しい配列、第4引数に1、第5引数に対象の配列のLengthプロパティを指定します。

Array.Copy(array, 0, result, 1, array.Length);

ここまでの処理で、対象の配列の先頭に要素を追加した新しい配列が作れます。

使用例

using System;
public class Example
{
    public static void Main()
    {
        int[] numbers = new int[4]{ 2, 3, 4, 5};
        
        int[] result = new int[numbers.Length + 1];
        
        result[0] = 1;
        
        Array.Copy(numbers, 0, result, 1, numbers.Length);
        
        foreach(var x in result)
        {
            Console.WriteLine(x);
        }
    }
}

/*
    出力:
    1
    2
    3
    4
    5
*/

Prepend()

2つ目は、Prepend()を使う方法です。

まず、System.Linqを導入します。

using System.Linq;

対象の配列からPrepend()を呼び出します。

Prepend()の引数に追加する要素を指定します。

そして、ToArray()を呼び出します。

T[] result = myArray.Prepend(value).ToArray();

上記のPrepend().ToArray()は、Prepend()の引数に指定した要素を配列の先頭に追加した配列を返します。

Prepend()は、.NET 4.7.1から使える機能です。

使用例

using System;
using System.Linq;
namespace Sample
{
    class Program
    {
        static void Main()
        {
            int[] numbers = new int[4] { 2, 3, 4, 5 };

            int[] result = numbers.Prepend(1).ToArray();

            foreach(var item in result)
            {
                Console.WriteLine(item);
            }
        }
    }
}

/*
    出力:
    1
    2
    3
    4
    5
*/

Concat()

3つ目は、Concat()を使う方法です。

まず、System.Linqを導入します。

using System.Linq;

次に、追加する要素を持つ配列を生成します。

追加する要素の配列からConcat()を呼び出します。

Concat()の引数に、先頭に要素を追加する配列を指定します。

そして、Concat()からToArray()を呼び出します。

T[] result = (new T[] { item1, item2, ・・・ }).Concat(myArray).ToArray();

上記のToArray()は、Concat()の引数に指定した配列の先頭に、生成した配列の要素を追加した新しい配列を返します。

使用例

using System;
using System.Linq;
public class Example
{
    public static void Main()
    {
        int[] numbers = new int[3]{ 3, 4, 5};
        
        int[] result = (new int[] { 1, 2 }).Concat(numbers).ToArray();
        
        foreach(var x in result)
        {
            Console.WriteLine(x);
        }
    }
}

/*
    出力:
    1
    2
    3
    4
    5
*/

リスト(List)

4つ目は、リスト(List)を使う方法です。

まず、配列をリストに変換します。

List<T> list = new List<T>(myArray);

次に、リストからInsert()を呼び出します。

Insert()の第1引数に0、第2引数に追加する要素を指定します。

list.Insert(0, value);

そして、リストからToArray()を呼び出します。

T[] result = list.ToArray();

上記のToArray()は、リストに変換した配列の先頭に要素を追加した新しい配列を返します。

使用例

using System;
using System.Collections.Generic;
public class Example
{
    public static void Main()
    {
        int[] numbers = new int[4]{ 2, 3, 4, 5};
        
        List<int> list = new List<int>(numbers);
        
        list.Insert(0, 1);
        
        int[] result = list.ToArray();
        
        foreach(var x in result)
        {
            Console.WriteLine(x);
        }
    }
}

/*
    出力:
    1
    2
    3
    4
    5
*/

まとめ

配列(Array)の先頭に要素を追加する方法は、次の4つです。

  • Array.Copy()を使う方法
  • Prepend()を使う方法
  • Concat()を使う方法
  • リストを使う方法

コメント

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