使用Span <t>代替子字符串

时间:2019-01-01 18:28:45

标签: c# substring system.memory

我已经阅读了几篇有关如何使用Span替换某些字符串操作的文章。因此,我已经在代码库中更新了一些代码以使用此新功能,但是,要能够就地使用它,则必须调用.ToString()

.ToString()是否有效地抵消了我使用Span<T>而不是Substring所带来的好处,因为这将不得不分配内存?在这种情况下,如果以这种方式使用Span,我将如何获得收益?或者仅仅是不可能?

//return geofenceNamesString.Substring(0, 50); Previous code
return geofenceNamesString.AsSpan().Slice(0, 50).ToString();

1 个答案:

答案 0 :(得分:3)

您的情况没有好处。

如果将多个“引用”保留在同一数据数组中,则跨度很有用。例如,如果您将文件读取到RAM中,然后保留对每一行的引用,则不必复制每行,而只需将其位置保留在大字符串中即可。

您正在以一种或另一种方式复制字符串。因此,只需使用Substring的更简单,更易读的方式即可。