C#有一个子字符串方法,它根据给定的起始索引和可能的长度参数复制字符。
但是,假设我们正在处理数百万个请求,并且每个请求都需要对字符串的某些部分执行操作。此外,假设此操作未对字符串进行任何更改,而只是读取其中的一部分。 我当然不想复制和使用额外的内存。
有没有办法在不复制的情况下进行此操作?
操作可以简单如下:
if (someReadOperation(this.request["some-header"].substring(10, 20)))
{
// Do something
}
else
{
// Do something else
}
更新
假设someReadOperation
读取字符串并检查它是否存在于某个字典中,或者它是否等于其他字符串。
答案 0 :(得分:2)
考虑以下替代方法来执行所需的操作......
if (this.request["some-header"].Length > 10)
{
// Do something
}
else
{
// Do something else
}
祝你好运!
答案 1 :(得分:0)
您可以考虑使用ArraySegment类型来跟踪片段,而无需为字符串缓冲区的每个部分分配空间。这样可以避免您希望避免的复制。
您需要注意,该类使用一些属性/方法公开共享的底层数组。