Array.Clearメソッドを使うことで、配列内の要素をクリアして初期化することが出来ます。 このメソッドを使って配列内をクリアすると、配列内の各要素にデフォルト値が設定されます。 デフォルト値は型によって異なりますが、数値などの型では0や0に相当する値、文字列型を含む参照型ではヌル参照(null/Nothing)となります。
どのような値で初期化されるか、型とデフォルト値の詳細については型の種類・サイズ・精度・値域 §.型のデフォルト値を参照してください。
また、このメソッドは引数としてクリアを開始するインデックスと長さをとるため、配列の一部分だけをクリアすることも出来ます。
Array.Clearメソッドで1次元配列をゼロクリアする
using System;
class Sample {
static void Main()
{
int[] arr = {0, 1, 2, 3, 4};
// インデックスが3の要素から2個分をクリア
Array.Clear(arr, 3, 2);
foreach (var elem in arr) {
Console.Write("{0}, ", elem);
}
Console.WriteLine();
// 配列の全要素をクリア
Array.Clear(arr, 0, arr.Length);
foreach (var elem in arr) {
Console.Write("{0}, ", elem);
}
Console.WriteLine();
}
}
実行結果
0, 1, 2, 0, 0, 0, 0, 0, 0, 0,
なお、Array.Clearメソッドは配列内の要素をクリアするためのもので、配列の長さを0にするものではありません。 配列の長さを0にするにはResizeメソッドを使います。
Array.Clearメソッドは、0を指定したmemset
、あるいはZeroMemory
マクロのような動作となります。 Array.Clearメソッドでは配列を0以外の値にクリアする事はできません。 配列全体を0以外の同一の値にセットする、memset
やFillMemory
マクロのような動作を求める場合は、Array.Fillメソッドを使用するか、for文等を使って個別に実装する必要があります。