如何将 C# 字符串转换为 Span<char>? (跨度<T>)
Posted
技术标签:
【中文标题】如何将 C# 字符串转换为 Span<char>? (跨度<T>)【英文标题】:How do I convert a C# string to a Span<char>? (Span<T>) 【发布时间】:2018-04-29 12:45:40 【问题描述】:如何将字符串转换为 Span
Span<char> mySpan = "My sample source string";
【问题讨论】:
【参考方案1】:Span<T>
和朋友都包含在 .NET Core 2.1 中,因此无需安装额外的 NuGet 包。
Dan Sorensen's answer 在那个日期是正确的并且基于预览,但现在它已经过时了。
对于字符串,扩展方法是AsSpan
和AsMemory
,分别返回ReadOnlySpan<char>
和ReadOnlyMemory<char>
。
显式AsReadOnlySpan
消失了,因为string
s 是不可变的,所以取回Span<char>
(可写)是没有意义的。
【讨论】:
感谢您的回答。正在直接搜索AsReadOnlySpan
,但即使AsSpan
返回ReadOnlySpan
也没有出现,doh。【参考方案2】:
您需要安装System.Memory NuGet package。
字符串的扩展方法称为 .AsSpan() 或 .AsReadOnlySpan() 可将字符串转换为适当的 Span
例子:
Span<char> mySpan = "My sample source string".AsSpan();
ReadOnlySpan<char> myReadOnlySpan = "My read only string".AsReadOnlySpan();
来源:MSDN Channel 9 "C# 7.2: Understanding Span"(大约 6 分钟)
更新:这个答案当时是正确的,但基于预览版。有关当前程序,请参阅updated answer on this page by gfoidl。
【讨论】:
正确的做法是归属为您提供该链接的 SO 用户。 Hans:你指的是MSDN源码链接吗?我自己找到了那个。我将其添加到我的答案中,以提醒我在哪里听到了解决方案。 另一位大牛添加了NuGet包链接。谢谢丹尼尔! Daniel:我希望我能给你这个答案的功劳。你说得对,这一步至关重要。以上是关于如何将 C# 字符串转换为 Span<char>? (跨度<T>)的主要内容,如果未能解决你的问题,请参考以下文章