[C#]配列(Array)の後ろからN個の要素を削除するには?

C#

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

配列(Array)の最後からN個の要素を削除する方法を紹介します。

スポンサーリンク

方法

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

配列(Array)の最後からN個の要素を削除する方法は、3つあります。

Array.Resize()

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

まず、Array.Resize()を呼び出します。

そして、Array.Resize()の第1引数に配列の参照、第2引数に配列のLengthプロパティを削除する要素数で引いた値を指定します。

//N=削除する要素数
Array.Resize(ref array, array.Length - N);

上記のArray.Resize()は、第1引数に指定した配列(Array)の後ろからN個の要素を削除します。

使用例

using System;

public class Sample
{
    public static void Main()
    {
        int[] numbers = new int[6]{ 1, 2, 3, 4, 5, 6 };
        
        int n = 3;
        Array.Resize(ref numbers, numbers.Length - n);
        
        foreach (int x in numbers)
        {
            Console.WriteLine(x);   
        }
    }
}
出力:
1
2
3

SkipLast()

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

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

using System.Linq;

次に、配列(Array)からSkipLast()を呼び出します。

SkipLast()の引数に削除する要素数を指定します。

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

//N=削除する要素数
T[] result = array.SkipLast(N).ToArray();

上記のToArray()は、SkipLast()を呼び出した配列(Array)の後ろからN個の要素を削除した配列を返します。

使用例

using System;
using System.Linq;

public class Sample
{
    public static void Main()
    {
        int[] numbers = new int[6] { 1, 2, 3, 4, 5, 6 };

        int n = 3;
        int[] result = numbers.SkipLast(n).ToArray();

        foreach (int x in result)
        {
            Console.WriteLine(x);
        }
    }
}
出力:
1
2
3

Take()

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

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

using System.Linq;

次に、配列(Array)からTake()を呼び出します。

Take()の引数に配列(Array)の長さを削除する要素数で引いた値を指定します。

配列(Array)の長さは、Lengthプロパティで取得します。

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

//N=削除する要素数
T[] result = array.Take(array.Length - N).ToArray();

上記のToArray()は、Take()を呼び出した配列(Array)の後ろからN個の要素を削除した配列を返します。(呼び出した配列に影響なし)

使用例

using System;
using System.Linq;
public class Sample
{
    public static void Main()
    {
        int[] numbers = new int[6]{ 1, 2, 3, 4, 5, 6 };
        
        int n = 3;
        int[] result = numbers.Take(numbers.Length - n).ToArray();
        
        foreach (int x in result)
        {
            Console.WriteLine(x);   
        }
    }
}
出力:
1
2
3

まとめ

配列(Array)の後ろからN個の要素を削除する方法は、次の3つです。

  • Array.Resize()を使う方法
    Array.Resize(ref array, array.Length - N);
  • SkipLast()を使う方法
    T[] result = array.SkipLast(N).ToArray();
  • Take()を使う方法
    T[] result = array.Take(array.Length – N).ToArray();

コメント

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