You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetStandard 2.0环境下如何不转字符串实现Span<Char>反转

NetStandard 2.0 无GC实现Span反转的方案
  • 前置依赖:确保项目已安装System.Memory NuGet包,这是NetStandard 2.0官方提供的Span<T>支持依赖,无额外运行时开销。

以下是可直接使用的扩展方法实现:

public static class SpanExtensions
{
    /// <summary>
    /// 反转Span<char>中的字符顺序,无堆分配,兼容NetStandard 2.0
    /// </summary>
    public static void Reverse(this Span<char> span)
    {
        if (span.Length <= 1)
        {
            return;
        }

        int leftIndex = 0;
        int rightIndex = span.Length - 1;
        
        // 首尾双指针交换,直接操作原始内存,无GC触发
        while (leftIndex < rightIndex)
        {
            char temp = span[leftIndex];
            span[leftIndex] = span[rightIndex];
            span[rightIndex] = temp;
            
            leftIndex++;
            rightIndex--;
        }
    }
}

实现特性

  • 完全无堆分配:所有变量均为值类型,操作直接作用于Span<char>指向的原始内存块,不会触发垃圾回收,满足要求。
  • 语法完全兼容NetStandard 2.0:没有使用高版本独有的语言特性,可直接复制到项目中使用。
  • 调用方式和官方方法一致:直接通过yourCharSpan.Reverse()调用,不需要调整原有业务逻辑。
  • 性能够用:即使后续调用频率提升,该实现的性能也能满足绝大多数场景需求。

内容的提问来源于stack exchange,提问作者Menelaos Vergis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:27:03