通过 Span<T> 实现子字符串

Substring implementation via Span<T>

当应该利用 Span<T> 时,SubstringFromStart 方法的实现会是什么样子?假设 substringLength <= input.Length:

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

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

Is this the way to go?

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

如果满足以下条件,您将在此处使用 Span<T> 受益:

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