use*_*716 8 c# arrays performance slice space-efficiency
我想将一个C#数组的子集传递给一个方法.我不在乎该方法是否覆盖数据,因此希望避免创建副本.
有没有办法做到这一点?
谢谢.
SLa*_*aks 15
更改方法以采取IEnumerable<T>或ArraySegment<T>.
然后你可以通过 new ArraySegment<T>(array, 5, 2)
在 C# 7.2 中,我们有Span<T>. 您可以AsSpan<T>为数组使用扩展方法并将其传递给该方法,而无需复制切片部分。例如:
Method( array.AsSpan().Slice(1,3) )
Run Code Online (Sandbox Code Playgroud)