C# - ReadOnlySequence<T> .. : 네이버블로그
요글 보다가 만듬.
#:package DotNext.IO@5.26.1
using System;
using System.Buffers;
using DotNext.Buffers;
byte[] b;
var seq = new ReadOnlyMemory<byte>[]
{
b = [1,2,3,4],
b = [5,6,7,8],
}.ToReadOnlySequence();
foreach(var v in new SequenceReader<byte>(seq))
Console.Write(v);
b = [..new SequenceReader<byte>(seq)];
Console.Write(new { b.Length });
static class SequenceReaderExtensions
{
public static Enumerator<T> GetEnumerator<T>(this SequenceReader<T> sr)
where T : unmanaged, IEquatable<T> => new(sr);
public ref struct Enumerator<T>(SequenceReader<T> sr) where T : unmanaged, IEquatable<T>
{
SequenceReader<T> sr = sr;
public bool MoveNext() => sr.TryPeek(out _);
public ref readonly T Current
{
get
{
try{ return ref sr.CurrentSpan[sr.CurrentSpanIndex]; }
finally { sr.TryRead(out _); }
}
}
}
}
https://blog.naver.com/techshare/222202246093