使用Span <T>替代Substring

Chr*_*ris 6 c# substring system.memory

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

是否.ToString()有效地否定我使用得到利益Span<T>,而不是Substring因为这将有分配内存?在这种情况下,如果以这种方式跨越,或者只是不可能,我如何获得好处?

//return geofenceNamesString.Substring(0, 50); Previous code
return geofenceNamesString.AsSpan().Slice(0, 50).ToString();
Run Code Online (Sandbox Code Playgroud)

nvo*_*igt 4

对于你的情况没有任何好处。

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

您正在以某种方式复制字符串。因此,只需采用更简单、更具可读性的方式即可Substring