通过Span <t>实现子串

时间:2018-02-06 13:52:42

标签: c# c#-7.2 system.memory

如果应该利用SubstringFromStartSpan<T>方法的实现方式如何?假设substringLength <= input.Length

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

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

1 个答案:

答案 0 :(得分:4)

  

这是要走的路吗?

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

如果符合以下条件,您可以使用Span<T>受益:

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