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