c# – 从char []创建不安全的字符串

我正在研究一种高性能代码,其中这个结构是性能关键部分的一部分.

这是在某些部分中发生的情况:

>字符串被“扫描”并且元数据被有效存储.
>基于此元数据,主字符串的块被分成char [] [].
>那个char [] []应该转换成一个字符串[].

现在,我知道你可以调用新的字符串(char []),但结果必须被复制.

为了避免这个额外的复制步骤发生,我想我必须可以直接写入字符串的内部缓冲区.即使这将是一个不安全的操作(我知道这带来了许多影响,如溢出,向前兼容).

我已经看到了实现这一目标的几种方法,但没有一种我真的很满意.

有没有人有关于如何实现这一目标的真实建议?

额外的信息:
实际过程不包括转换为char []必然,它实际上是一个’多子串’操作.像3个索引和附加的长度.

StringBuilder对于少量的concats来说有太多的开销.

编辑:
由于我所要求的一些含糊不清的方面,让我重新拟定它.

这是发生的事情:

>主字符串已编入索引.
>主字符串的一部分被复制到char [].
> char []转换为字符串.

我想要做的是合并第2步和第3步,结果是:

>主字符串已编入索引.
>主要字符串的一部分被复制到一个字符串(并且GC在此过程中可以通过正确使用fixed关键字来保持其手离开?).

需要注意的是,我无法从string []更改输出类型,因为这是一个外部库,项目依赖于它(向后兼容性).

解决方法

如果您这样做会发生什么:
string s = GetBuffer();
fixed (char* pch = s) {
    pch[0] = 'R';
    pch[1] = 'e';
    pch[2] = 's';
    pch[3] = 'u';
    pch[4] = 'l';
    pch[5] = 't';
}

我认为世界将会结束(或者至少是.NET管理的部分),但这与StringBuilder的作用非常接近.

您是否有分析器数据显示StringBuilder不够快,或者这是一个假设?

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...