<PackageReference Include="System.Memory" Version="4.5.4" />

System.Buffers.ReadOnlySequence<T>

public struct ReadOnlySequence<T>
namespace System.Buffers { public readonly struct ReadOnlySequence<T> { public struct Enumerator { public ReadOnlyMemory<T> Current { get; } public Enumerator(ref ReadOnlySequence<T> sequence); public bool MoveNext(); } public static readonly ReadOnlySequence<T> Empty; public long Length { get; } public bool IsEmpty { get; } public bool IsSingleSegment { get; } public ReadOnlyMemory<T> First { get; } public SequencePosition Start { get; } public SequencePosition End { get; } public ReadOnlySequence(ReadOnlySequenceSegment<T> startSegment, int startIndex, ReadOnlySequenceSegment<T> endSegment, int endIndex); public ReadOnlySequence(T[] array); public ReadOnlySequence(T[] array, int start, int length); public ReadOnlySequence(ReadOnlyMemory<T> memory); public ReadOnlySequence<T> Slice(long start, long length); public ReadOnlySequence<T> Slice(long start, SequencePosition end); public ReadOnlySequence<T> Slice(SequencePosition start, long length); public ReadOnlySequence<T> Slice(int start, int length); public ReadOnlySequence<T> Slice(int start, SequencePosition end); public ReadOnlySequence<T> Slice(SequencePosition start, int length); public ReadOnlySequence<T> Slice(SequencePosition start, SequencePosition end); public ReadOnlySequence<T> Slice(SequencePosition start); public ReadOnlySequence<T> Slice(long start); public Enumerator GetEnumerator(); public SequencePosition GetPosition(long offset); public SequencePosition GetPosition(long offset, SequencePosition origin); public bool TryGet(ref SequencePosition position, out ReadOnlyMemory<T> memory, bool advance = true); } }