相关疑难解决方法(0)

在C#字符串对象之间共享字符缓冲区

这可能吗?鉴于C#使用不可变字符串,人们可以预期会有一种方法:

var expensive = ReadHugeStringFromAFile();
var cheap = expensive.SharedSubstring(1);
Run Code Online (Sandbox Code Playgroud)

如果没有这样的功能,为什么还要使字符串不变?或者,如果字符串由于其他原因已经不可变,为什么不提供此方法呢?

我正在调查的具体原因是进行一些文件解析.简单的递归下降解析器(例如由TinyPG生成的解析器,或者易于手工编写的解析器)在整个地方使用Substring.这意味着如果你给他们一个大文件来解析,内存流失是令人难以置信的.当然有解决方法 - 基本上是滚动你自己的SubString类,然后当然忘记了能够使用诸如StartsWith之类的String方法或者像Regex这样的字符串库,所以你也需要推出自己的这些版本.我假设像ANTLR这样的解析器生成器基本上就是这样做的,但我的格式很简单,不能证明使用这样的怪物工具.即使是TinyPG也可能是一种矫枉过正.

有人请告诉我,我错过了一些明显或不那么明显的标准C#方法调用...

c# parsing memory-management substring

3
推荐指数
1
解决办法
573
查看次数

标签 统计

c# ×1

memory-management ×1

parsing ×1

substring ×1