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);
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.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 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
*/
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
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 ""
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
//
// 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 поле. Затем он вызывает метод для очистки 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
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 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
Комментарии
Этот метод сбрасывает каждый элемент в массиве до значения по умолчанию типа элемента. Он задает для элементов ссылочных типов (включая String элементы) null
значение , а для элементов типов значений — значения по умолчанию, показанные в следующей таблице.
Тип | Значение |
---|---|
Boolean | false |
Все целочисленные и числовые типы с плавающей запятой | 0 (ноль) |
DateTime | DateTime.MinValue |
Другие типы значений | Значение по умолчанию для полей типа |
Диапазон очищенных элементов, перенося их из строки в строку в многомерном массиве.
Этот метод очищает только значения элементов; сами элементы не удаляются. Массив имеет фиксированный размер; поэтому элементы нельзя добавлять или удалять.
Этот метод является операцией O(n
), где n
— .length