配列のサイズを変更するには?(Resize編)[2.0のみ、C#、VB].NET TIPS

» 2006年05月12日 05時00分 公開
[遠藤孝信デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 「TIPS:配列のサイズを変更するには?」で紹介しているように、.NET Framework 1.xで配列のサイズを変更するには、新しいサイズの別の配列を宣言し各要素をコピーしなければならなかった(VBでは「Redim Preserveステートメント」でも可能)。

 しかし.NET Framework 2.0のArrayクラス(System名前空間)には、配列のサイズを変更するためのResizeメソッドが追加されており、既存の配列を任意のサイズに変更することができる。

ArrayクラスのResizeメソッド

 Resizeメソッドは次のような構文を持つ静的なジェネリック・メソッドだ。

public static void Resize<T>(ref T[] array, int newSize)

Public Shared Sub Resize(Of T)(ByRef array As T(), newSize As Integer)

Resizeメソッドの構文(上:C#、下:VB)

 第1パラメータにはサイズを変更したい配列、第2パラメータには新しいサイズを指定する。型パラメータ「T」には配列の要素の型を指定するが、これは第1パラメータに指定した配列から推論させることができるため、通常は型パラメータの指定を省略できる。

 以下にResizeメソッドを使用したサンプル・プログラムを示す。

// arrayresize.cs

using System;

public class ArrayResize {
  static void Main() {
    string[] numbers = {"one", "two", "three"};
    Console.WriteLine(numbers.Length); // 出力:3

    Array.Resize(ref numbers, 4);

    // 上記は<string>を省略している
    // Array.Resize<string>(ref numbers, 4);

    numbers[3] = "four";
    Console.WriteLine(numbers.Length); // 出力:4
  }
}

// コンパイル方法:csc arrayresize.cs

Resizeメソッドにより配列をリサイズするC#のサンプル・プログラム(arrayresize.cs)
arrayresize.csのダウンロード

' arrayresize.vb

Imports System

Public Class ArrayResize
  Shared Sub Main()
    Dim numbers As String() = {"one", "two", "three"}
    Console.WriteLine(numbers.Length) ' 出力:3

    Array.Resize(numbers, 4)

    ' 上記は(Of String)を省略している
    ' Array.Resize(Of String)(numbers, 4)

    numbers(3) = "four"
    Console.WriteLine(numbers.Length) ' 出力:4
  End Sub
End Class

' コンパイル方法:vbc arrayresize.vb

Resizeメソッドにより配列をリサイズするVBのサンプル・プログラム(arrayresize.vb)
arrayresize.vbのダウンロード

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。