How do I convert a C# string to a Span? (Spa

2019-02-21 08:09发布

问题:

How do I convert a string to a Span<T>?

Span<char> mySpan = "My sample source string";

回答1:

Span<T> and friends are included in .NET Core 2.1, so no additional NuGet-package needs to be installed.

Dan Sorensen answer was correct at that date and based on the preview, but now it is outdated. For string the extension methods are AsSpan and AsMemory, that return ReadOnlySpan<char> and ReadOnlyMemory<char> respectively.

ExplicitAsReadOnlySpan is gone, because strings are immutable, so it makes no sense to get back a Span<char> (that is writeable).



回答2:

You need to install the System.Memory NuGet package.

There are extension methods for strings called .AsSpan() or .AsReadOnlySpan() to convert a string to the appropriate Span<T>.

Example:

Span<char> mySpan = "My sample source string".AsSpan();
ReadOnlySpan<char> myReadOnlySpan = "My read only string".AsReadOnlySpan();

Source: MSDN Channel 9 "C# 7.2: Understanding Span" (around the 6 minute mark)

Update: this answer was correct at the time, but based on a preview version. See updated answer on this page by gfoidl for current procedure.



标签: c# c#-7.2