在 NetStandard 2 中反转 Span

Reverse a Span in NetStandard 2

我需要反转 Span<Char>,如果我使用 NetStandard 2.1 会很容易。

我可以使用 MemoryExtensions.Reverse(Span),但不幸的是,我使用的版本不支持它。

我试图从 repository 复制代码,但它使用了一些 NetStandard 2.0 中不存在的语言功能。

我不介意使用优化程度较低的实现,因为它在我的代码中不常使用。不过,我无法将它转换为字符串然后反转它,因为我无法在此实现中处理垃圾收集触发器。

如何在不转换为字符串或升级 NetStandard 版本的情况下反转 Span<Char>

如果超级高效不是关键,为什么不用简单的 for 循环?

Span<int> x = new[] { 1, 2, 3, 4 }.AsSpan();
for (int i = 0, j = x.Length - 1; i < j; i++, j--)
{
    var temp = x[i];
    x[i] = x[j];
    x[j] = temp;
}

安装最新的 System.Memory NuGet 包,MemoryExtensions.Reverse 方法将可供您使用。