使用 Span<T> 实现子字符串

5
当使用 Span<T> 时,实现一个 SubstringFromStart 方法会是什么样子?假设 substringLength <= input.Length:
 ReadOnlySpan<char> span = input.AsSpan().Slice(0, substringLength);
 return new string(span.ToArray());

这是正确的方法吗?是否有更好、更简洁的方法,而不是 new string(span.ToArray())

1个回答

5

这样做可行吗?

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

如果你想要从中受益,可以在以下情况下使用 Span<T>

  • 你想返回 Span<char>,而不是 string。这样就不需要字符串分配了;
  • 你接收到 Span<char> 作为输入,而且你永远不需要将其实现为一个数组,或者当传递到方法中时,你不需要一个中间实现。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接