通过 Span<T> 实现子串

Dav*_*vid 5 c# c#-7.2 system.memory

一个SubstringFromStart方法的实现在什么时候Span<T>应该被利用?假设substringLength <= input.Length

 ReadOnlySpan<char> span = input.AsSpan().Slice(0, substringLength);
 return new string(span.ToArray());
Run Code Online (Sandbox Code Playgroud)

这是要走的路吗?有没有比 更好、更简洁的方法new string(span.ToArray())

Pat*_*man 5

这是要走的路吗?

不, usingSpan<T>在这里没用,因为您需要一个字符串构造函数的字符数组(还没有接受 a Span<char>)。

在以下情况下,您将受益于使用Span<T>这里:

  • 您将返回Span<char>,而不是string。那么你就不需要字符串分配了;
  • 您收到 aSpan<char>作为输入,并且永远不需要将其具体化为数组,或者您不需要中间具体化(例如,将其传递给方法时)。