Прочитать на английском

Поделиться через


Array.Clear Метод

Определение

Перегрузки

Clear(Array)

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

Clear(Array, Int32, Int32)

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

Clear(Array)

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

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

public static void Clear (Array array);

Параметры

array
Array

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

Исключения

array имеет значение null.

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

.NET 9 и другие версии
Продукт Версии
.NET 6, 7, 8, 9

Clear(Array, Int32, Int32)

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

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

public static void Clear (Array array, int index, int length);

Параметры

array
Array

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

index
Int32

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

length
Int32

Число элементов, подлежащих очистке.

Исключения

array имеет значение null.

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

-или-

Значение параметра length меньше нуля.

-или-

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

Примеры

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

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
 */

В следующем примере определяется TimeZoneTime структура, которая включает TimeZoneInfo поле и DateTimeOffset поле. Затем он вызывает метод для очистки Clear одного элемента в двухэлейном массиве значений TimeZoneTime . Метод задает значение очищенного элемента в значение TimeZoneInfo по умолчанию объекта , которое равно null, и значение DateTimeOffset по умолчанию объекта , которое равно 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

Комментарии

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0