The Span<T>
has landed in .NET Standard today.
According to the article
(Span<T> is) at the heart of most performance-related improvements in .NET Core 2.1. Since it allows managing buffers in a more efficient way, it can help in reducing allocations and copying. We consider Span to be a very fundamental type as it requires runtime and compiler support in order to be fully leveraged.
The Span is a simple struct with two fields and methods:
public readonly ref struct Span<T> { private readonly ref T _pointer; private readonly int _length; ... }
And that’s exactly what Sciter Engine uses for the same purpose from the very beginning, so 10+ years so far:
template <typename T> struct slice { const T* start; unsigned int length; ... }
It uses this construct as internally everywhere as in SDK.
Nothing new under the Sun …