Метод Slice
Метод Slice не копирует
данные. Запись в кусок меняет
исходный массив. За границей
бросают ArgumentOutOfRangeException.
Аналог у
Memory.Slice.
Синтаксис
Span<T> part = span.Slice(start, length);
Пример
Давайте взять Slice(1, 2)
у { 1, 2, 3 }:
using System;
class Program
{
static void Main()
{
int[] data = { 1, 2, 3 };
Span<int> piece = data.AsSpan().Slice(1, 2);
Console.WriteLine(piece.Length);
Console.WriteLine(piece[0]);
}
}
Результат выполнения кода:
2
2
Пример
Давайте изменить кусок и проверить массив:
using System;
class Program
{
static void Main()
{
int[] data = { 1, 2, 3 };
Span<int> piece = data.AsSpan().Slice(1, 2);
piece[0] = 9;
int res = data[1];
Console.WriteLine(res);
}
}
Результат выполнения кода:
9
Пример
Давайте запросить Slice(0, 4)
у трёх элементов:
using System;
class Program
{
static void Main()
{
int[] data = { 1, 2, 3 };
Span<int> span = data;
try
{
span.Slice(0, 4);
}
catch (ArgumentOutOfRangeException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Смотрите также
-
Length,
длина куска -
CopyTo,
копирование -
Memory.Slice,
уMemory -
Span,
обзор