ハック的な手法で List に AsSpan
public static class ListExtensions { [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Span<T> AsSpan<T>(this List<T> self) { #if NET5_0_OR_GREATER return System.Runtime.InteropServices.CollectionsMarshal.AsSpan(self); #else // Hacked!!!! return Unsafe.As<ListDummy<T>>(self).Items.AsSpan(0, self.Count); #endif } private class ListDummy<T> { internal T[] Items; } } // 使い方 List<int> list = new() { 1, 2, 3, 4, 5 }; Span<int> span = list.AsSpan();
まぁもう .NET5 以前環境はあまり無いと思いますが、、、