读取两个索引之间的字符串而不复制

时间:2013-12-03 22:56:06

标签: c#

C#有一个子字符串方法,它根据给定的起始索引和可能的长度参数复制字符。

但是,假设我们正在处理数百万个请求,并且每个请求都需要对字符串的某些部分执行操作。此外,假设此操作未对字符串进行任何更改,而只是读取其中的一部分。 我当然不想复制和使用额外的内存。

有没有办法在不复制的情况下进行此操作?

操作可以简单如下:

if (someReadOperation(this.request["some-header"].substring(10, 20)))
{
    // Do something
}
else
{
    // Do something else
}

更新 假设someReadOperation读取字符串并检查它是否存在于某个字典中,或者它是否等于其他字符串。

2 个答案:

答案 0 :(得分:2)

考虑以下替代方法来执行所需的操作......

if (this.request["some-header"].Length > 10)
{
    // Do something
}
else
{
    // Do something else
}

祝你好运!

答案 1 :(得分:0)

您可以考虑使用ArraySegment类型来跟踪片段,而无需为字符串缓冲区的每个部分分配空间。这样可以避免您希望避免的复制。

您需要注意,该类使用一些属性/方法公开共享的底层数组。