Array.Clear(Array, Int32, Int32) Array.Clear(Array, Int32, Int32) Array.Clear(Array, Int32, Int32) Method

定義

將陣列中的項目範圍設定為每個項目類型的預設值。Sets a range of elements in an array to the default value of each element type.

public:
 static void Clear(Array ^ array, int index, int length);
public static void Clear (Array array, int index, int length);
static member Clear : Array * int * int -> unit

參數

array
Array Array Array

項目需要加以清除的陣列。The array whose elements need to be cleared.

index
Int32 Int32 Int32

要清除之項目範圍的起始索引。The starting index of the range of elements to clear.

length
Int32 Int32 Int32

要清除的項目數目。The number of elements to clear.

例外狀況

index 小於 array 的下限。index is less than the lower bound of array.

-或--or- length 小於零。length is less than zero.

-或--or- indexlength 的總和大於 array 的大小。The sum of index and length is greater than the size of array.

範例

下列範例會使用Clear方法來重設一維、 二維和三維陣列中的整數值。The following example uses the Clear method to reset integer values in a one-dimensional, two-dimensional, and three-dimensional array.

using System;

class Example
{
    public static void Main()
    {
        Console.WriteLine("One dimension (Rank=1):");
        int[] numbers1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        for (int i = 0; i < 9; i++)
        {
            Console.Write("{0} ", numbers1[i]);
        }
        Console.WriteLine();
        Console.WriteLine();

        Console.WriteLine("Array.Clear(numbers1, 2, 5)");
        Array.Clear(numbers1, 2, 5);

        for (int i = 0; i < 9; i++)
        {
            Console.Write("{0} ", numbers1[i]);
        }
        Console.WriteLine();
        Console.WriteLine();

        Console.WriteLine("Two dimensions (Rank=2):");
        int[,] numbers2 = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                Console.Write("{0} ", numbers2[i, j]);
            }
            Console.WriteLine();
        }

        Console.WriteLine();
        Console.WriteLine("Array.Clear(numbers2, 2, 5)");
        Array.Clear(numbers2, 2, 5);

        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                Console.Write("{0} ", numbers2[i, j]);
            }
            Console.WriteLine();
        }

        Console.WriteLine("Three dimensions (Rank=3):");
        int[, ,] numbers3 = {{{1, 2}, {3, 4}},
                             {{5, 6}, {7, 8}},
                             {{9, 10}, {11, 12}}};

        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 2; j++)
            {
                for (int k = 0; k < 2; k++)
                {
                    Console.Write("{0} ", numbers3[i, j, k]);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }

        Console.WriteLine("Array.Clear(numbers3, 2, 5)");
        Array.Clear(numbers3, 2, 5);

        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 2; j++)
            {
                for (int k = 0; k < 2; k++)
                {
                    Console.Write("{0} ", numbers3[i, j, k]);
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }
    }
}
/*  This code example produces the following output:
 * 
 * One dimension (Rank=1):
 * 1 2 3 4 5 6 7 8 9
 * 
 * Array.Clear(numbers1, 2, 5)
 * 1 2 0 0 0 0 0 8 9
 * 
 * Two dimensions (Rank=2):
 * 1 2 3
 * 4 5 6
 * 7 8 9
 * 
 * Array.Clear(numbers2, 2, 5)
 * 1 2 0
 * 0 0 0
 * 0 8 9
 * 
 * Three dimensions (Rank=3):
 * 1 2
 * 3 4
 * 
 * 5 6
 * 7 8
 * 
 * Array.Clear(numbers3, 2, 5)
 * 1 2
 * 0 0
 * 
 * 0 0
 * 0 8
 */
Module Example
    Sub Main()
        Console.WriteLine(vbLf & "One dimension (Rank=1):")
        Dim numbers1() As Integer = {1, 2, 3, 4, 5, 6, 7, 8, 9}

        For i As Integer = 0 To 8
            Console.Write("{0} ", numbers1(i))
        Next 
        Console.WriteLine()

        Console.WriteLine(vbLf & "Array.Clear(numbers1, 2, 5)")
        Array.Clear(numbers1, 2, 5)

        For i As Integer = 0 To 8
            Console.Write("{0} ", numbers1(i))
        Next 
        Console.WriteLine()


        Console.WriteLine(vbLf & "Two dimensions (Rank=2):")
        Dim numbers2(,) As Integer = {{ 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }}

        For i As Integer = 0 To 2
            For j As Integer = 0 To 2
                Console.Write("{0} ", numbers2(i, j))
            Next 
            Console.WriteLine()
        Next 

        Console.WriteLine(vbLf & "Array.Clear(numbers2, 2, 5)")
        Array.Clear(numbers2, 2, 5)

        For i As Integer = 0 To 2
            For j As Integer = 0 To 2
                Console.Write("{0} ", numbers2(i, j))
            Next 
            Console.WriteLine()
        Next 


        Console.WriteLine(vbLf & "Three dimensions (Rank=3):")
        Dim numbers3(,,) As Integer = {{{ 1, 2 }, { 3, 4 }}, _
                                       {{ 5, 6 }, { 7, 8 }}, _
                                       {{ 9, 10 }, { 11, 12 }}}

        For i As Integer = 0 To 1
            For j As Integer = 0 To 1
                For k As Integer = 0 To 1
                    Console.Write("{0} ", numbers3(i, j, k))
                Next 
                Console.WriteLine()
            Next 
            Console.WriteLine()
        Next 
        Console.WriteLine()
        
        Console.WriteLine("Array.Clear(numbers3, 2, 5)")
        Array.Clear(numbers3, 2, 5)

        For i As Integer = 0 To 1
            For j As Integer = 0 To 1
                For k As Integer = 0 To 1
                    Console.Write("{0} ", numbers3(i, j, k))
                Next 
                Console.WriteLine()
            Next 
            Console.WriteLine()
        Next 
    End Sub
End Module
' The example displays the following output:
'       One dimension (Rank=1):
'       1 2 3 4 5 6 7 8 9
'       
'       Array.Clear(numbers1, 2, 5)
'       1 2 0 0 0 0 0 8 9
'       
'       Two dimensions (Rank=2):
'       1 2 3
'       4 5 6
'       7 8 9
'       
'       Array.Clear(numbers2, 2, 5)
'       1 2 0
'       0 0 0
'       0 8 9
'       
'       Three dimensions (Rank=3):
'       1 2
'       3 4
'
'       5 6
'       7 8
'       
'       Array.Clear(numbers3, 2, 5)
'       1 2
'       0 0
'       
'       0 0
'       0 8

下列範例會定義TimeZoneTime結構,其中包含TimeZoneInfo欄位和DateTimeOffset欄位。The following example defines a TimeZoneTime structure that includes a TimeZoneInfo field and a DateTimeOffset field. 然後它會呼叫Clear方法,以清除的兩個元素陣列中的一個項目TimeZoneTime值。It then calls the Clear method to clear one element in a two-element array of TimeZoneTime values. 方法會將已清除項目的值設定的預設值TimeZoneInfo物件,即null,和預設值DateTimeOffset物件,它是DateTimeOffset.MinValueThe method sets the value of the cleared element to the default value of a TimeZoneInfo object, which is null, and the default value of a DateTimeOffset object, which is DateTimeOffset.MinValue.

using System;

public struct TimeZoneTime
{
   private DateTimeOffset dt;
   private TimeZoneInfo tz;
   
   public TimeZoneTime(DateTimeOffset dateTime, TimeZoneInfo timeZone)
   {
      dt = dateTime;
      tz = timeZone;
   }

   public DateTimeOffset DateTime 
   { get { return dt; } }
   
   public TimeZoneInfo TimeZone 
   { get { return tz; } }
}

public class Example
{
   public static void Main()
   {
      // Declare an array with two elements.
      TimeZoneTime[] timeZoneTimes = { new TimeZoneTime(DateTime.Now, TimeZoneInfo.Local),
                                       new TimeZoneTime(DateTime.Now, TimeZoneInfo.Utc) };   
      foreach (var timeZoneTime in timeZoneTimes)
         Console.WriteLine("{0}: {1:G}", 
                           timeZoneTime.TimeZone == null ? "<null>" : timeZoneTime.TimeZone.ToString(), 
                           timeZoneTime.DateTime);
      Console.WriteLine();
      
      Array.Clear(timeZoneTimes, 1, 1);
      foreach (var timeZoneTime in timeZoneTimes)
         Console.WriteLine("{0}: {1:G}", 
                           timeZoneTime.TimeZone == null ? "<null>" : timeZoneTime.TimeZone.ToString(), 
                           timeZoneTime.DateTime);
   }
}
// The example displays the following output:
//       (UTC-08:00) Pacific Time (US & Canada): 1/20/2014 12:11:00 PM
//       UTC: 1/20/2014 12:11:00 PM
//       
//       (UTC-08:00) Pacific Time (US & Canada): 1/20/2014 12:11:00 PM
//       <null>: 1/1/0001 12:00:00 AM
Public Structure TimeZoneTime
   Private dt As DateTimeOffset
   Private tz As TimeZoneInfo
   
   Public Sub New(dateTime As DateTimeOffset, timeZone As TimeZoneInfo)
      dt = dateTime
      tz = timeZone
   End Sub

   Public ReadOnly Property DateTime As DateTimeOffset
      Get
         Return dt
      End Get
   End Property
   
   Public ReadOnly Property TimeZone As TimeZoneInfo
      Get
         Return tz
      End Get
   End Property 
End Structure

Module Example
   Public Sub Main()
      ' Declare an array with two elements.
      Dim timeZoneTimes() As TimeZoneTime = { New TimeZoneTime(Date.Now, TimeZoneInfo.Local),
                                              New TimeZoneTime(Date.Now, TimeZoneInfo.Utc) }   
      For Each timeZoneTime In timeZoneTimes
         Console.WriteLine("{0}: {1:G}", 
                           If(timeZoneTime.TimeZone Is Nothing, "<null>", timeZoneTime.TimeZone), 
                           timeZoneTime.DateTime)
      Next
      Console.WriteLine()
      
      Array.Clear(timeZoneTimes, 1, 1)
      For Each timeZoneTime In timeZoneTimes
         Console.WriteLine("{0}: {1:G}", 
                           If(timeZoneTime.TimeZone Is Nothing, "<null>", timeZoneTime.TimeZone), 
                           timeZoneTime.DateTime)
      Next
   End Sub
End Module
' The example displays output like the following:
'       (UTC-08:00) Pacific Time (US & Canada): 1/20/2014 12:11:00 PM
'       UTC: 1/20/2014 12:11:00 PM
'       
'       (UTC-08:00) Pacific Time (US & Canada): 1/20/2014 12:11:00 PM
'       <null>: 1/1/0001 12:00:00 AM

備註

這個方法會將陣列中的每個項目重設項目類型的預設值。This method resets each element in an array to the element type's default value. 它會將參考類型的項目 (包括String項目) 來null,並將實值型別的項目設定為下表所示的預設值。It sets elements of reference types (including String elements) to null, and sets elements of value types to the default values shown in the following table.

類型Type Value
Boolean false
所有整數和浮點數值類型All integral and floating point numeric types 0 (零)0 (zero)
DateTime DateTime.MinValue
其他實值型別Other value types 預設值是類型的欄位Default value of the type's fields

範圍清除項目換行逐列中的多維陣列。The range of cleared elements wrap from row to row in a multi-dimensional array.

這個方法只會清除項目; 值它不會刪除項目本身。This method only clears the values of the elements; it does not delete the elements themselves. 陣列具有固定的大小;因此,無法加入或移除項目。An array has a fixed size; therefore, elements cannot be added or removed.

這個方法是 O (n) 運算,其中nlengthThis method is an O(n) operation, where n is length.

適用於