Array.Clear Метод

Определение

Перегрузки

Имя Описание
Clear(Array)

Очищает содержимое массива.

Clear(Array, Int32, Int32)

Задает диапазон элементов в массиве значением по умолчанию каждого типа элемента.

Clear(Array)

Исходный код:
Array.cs
Исходный код:
Array.cs
Исходный код:
Array.CoreCLR.cs
Исходный код:
Array.CoreCLR.cs
Исходный код:
Array.CoreCLR.cs

Очищает содержимое массива.

public:
 static void Clear(Array ^ array);
public static void Clear(Array array);
static member Clear : Array -> unit
Public Shared Sub Clear (array As Array)

Параметры

array
Array

Массив для очистки.

Исключения

array равно null.

Применяется к

Clear(Array, Int32, Int32)

Исходный код:
Array.cs
Исходный код:
Array.cs
Исходный код:
Array.CoreCLR.cs
Исходный код:
Array.CoreCLR.cs
Исходный код:
Array.CoreCLR.cs

Задает диапазон элементов в массиве значением по умолчанию каждого типа элемента.

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
Public Shared Sub Clear (array As Array, index As Integer, length As Integer)

Параметры

array
Array

Массив, элементы которого необходимо очистить.

index
Int32

Начальный индекс диапазона элементов для очистки.

length
Int32

Число элементов для очистки.

Исключения

array равно null.

index меньше нижней границы array.

–или–

length меньше нуля.

–или–

index Сумма и length больше размераarray.

Примеры

В следующем примере метод используется Clear для сброса целых значений в одномерном, двухмерном и трехмерном массиве.

using System;

class Example
{
    public static void RunIt()
    {
        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("\nThree dimensions (Rank=3):");
        int[,,] numbers3 = {{{1, 2}, {3, 4}},
                             {{5, 6}, {7, 8}},
                             {{9, 10}, {11, 12}}};

        for (int i = 0; i < 3; 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 < 3; 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
 * 
 * 9 10
 * 11 12
 * 
 * Array.Clear(numbers3, 2, 5)
 * 1 2
 * 0 0
 * 
 * 0 0
 * 0 8
 * 
 * 9 10
 * 11 12
 */
open System

printfn "One dimension (Rank=1):"
let numbers1 = [| 1..9 |]

for i in numbers1 do
    printf $"{i} "
printfn "\n\nArray.Clear(numbers1, 2, 5)"

Array.Clear(numbers1, 2, 5)

for i in numbers1 do
    printf $"{i} "

printfn "\n\nTwo dimensions (Rank=2):"

let numbers2 = array2D [ [ 1; 2; 3 ]; [ 4; 5; 6 ]; [ 7; 8; 9 ] ]

for i = 0 to 2 do
    for j = 0 to 2 do
        printfn $"{numbers2[i, j]} "
    printfn ""

printfn "\nArray.Clear(numbers2, 2, 5)"
Array.Clear(numbers2, 2, 5)

for i = 0 to 2 do
    for j = 0 to 2 do
        printfn $"{numbers2[i, j]} "
    printfn ""

printfn "Three dimensions (Rank=3):"
let numbers3 = Array3D.zeroCreate 2 2 2
numbers3[0, 0, 0] <- 1
numbers3[0, 0, 1] <- 2
numbers3[0, 1, 0] <- 3
numbers3[0, 1, 1] <- 4
numbers3[1, 0, 0] <- 5
numbers3[1, 1, 0] <- 7
numbers3[1, 0, 1] <- 6
numbers3[1, 1, 1] <- 8
numbers3[2, 0, 0] <- 9
numbers3[2, 1, 0] <- 10
numbers3[2, 0, 1] <- 11
numbers3[2, 1, 1] <- 12

for i = 0 to 2 do
    for j = 0 to 1 do
        for k = 0 to 1 do
            printf $"{numbers3[i, j, k]} "
        printfn ""
    printfn ""

printfn "Array.Clear(numbers3, 2, 5)"
Array.Clear(numbers3, 2, 5)

for i = 0 to 1 do
    for j = 0 to 1 do
        for k = 0 to 1 do
            printf $"{numbers3[i, j, k]} "
        printfn ""
    printfn ""

//  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
//
// 9 10
// 11 12
//
// Array.Clear(numbers3, 2, 5)
// 1 2
// 0 0
//
// 0 0
// 0 8
//
// 9 10
// 11 12
//
Module Example
    Sub RunIt()
        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 2
            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("Array.Clear(numbers3, 2, 5)")
        Array.Clear(numbers3, 2, 5)

        For i As Integer = 0 To 2
            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
'       
'       9 10
'       11 12
'       
'       Array.Clear(numbers3, 2, 5)
'       1 2
'       0 0
'       
'       0 0
'       0 8
'       
'       9 10
'       11 12

В следующем примере определяется TimeZoneTime структура, включающая TimeZoneInfo поле и DateTimeOffset поле. Затем метод вызывает Clear метод для очистки одного элемента в массиве значений TimeZoneTime двух элементов. Метод задает значение очищаемого элемента значением по умолчанию объекта, т. е. значением TimeZoneInfo по умолчанию объекта, который является nullDateTimeOffsetзначением по умолчаниюDateTimeOffset.MinValue.

using System;

public struct TimeZoneTime
{
    public TimeZoneTime(DateTimeOffset dateTime, TimeZoneInfo timeZone)
    {
        DateTime = dateTime;
        TimeZone = timeZone;
    }

    public DateTimeOffset DateTime { get; }

    public TimeZoneInfo TimeZone { get; }
}

public class Example1
{
    public static void RunIt()
    {
        // Declare an array with two elements.
        TimeZoneTime[] timeZoneTimes = {
            new(DateTime.Now, TimeZoneInfo.Local),
            new(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
open System

[<Struct>]
type TimeZoneTime =
    { DateTime: DateTimeOffset
      TimeZone: TimeZoneInfo }

// Declare an array with two elements.
let timeZoneTimes = 
    [| { DateTime = DateTimeOffset.Now; TimeZone = TimeZoneInfo.Local }
       { DateTime = DateTimeOffset.Now; TimeZone = TimeZoneInfo.Local } |]

for timeZoneTime in timeZoneTimes do
    let tz = if isNull timeZoneTime.TimeZone then "<null>" else string timeZoneTime.TimeZone
    printfn $"{tz}: {timeZoneTime.DateTime:G}"
printfn ""

Array.Clear(timeZoneTimes, 1, 1)
for timeZoneTime in timeZoneTimes do
    let tz = if isNull timeZoneTime.TimeZone then "<null>" else string timeZoneTime.TimeZone
    printfn $"{tz}: {timeZoneTime.DateTime:G}"

// 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 Example1
    Public Sub RunIt()
        ' 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

Комментарии

Этот метод сбрасывает каждый элемент массива в значение по умолчанию типа элемента. Он задает элементы ссылочных типов (включая String элементы) nullи задает элементы типов значений по умолчанию, показанные в следующей таблице.

Тип Ценность
Boolean false
Все целочисленные и числовые типы с плавающей запятой 0 (ноль)
DateTime DateTime.MinValue
Другие типы значений Значение по умолчанию полей типа

Диапазон очищенных элементов, отложенных от строки к строке в многомерном массиве.

Этот метод очищает только значения элементов; Он не удаляет сами элементы. Массив имеет фиксированный размер; Таким образом, элементы нельзя добавлять или удалять.

Этот метод представляет собой операцию $O(n)$, где $n length$ .

Применяется к