VS15.5.6搭配.NET4.7.1无法调用Span/ReadOnlySpan的技术咨询
在.NET Framework 4.7.1中使用ReadOnlySpan/Span的方案
当然有大量开发者在使用ReadOnlySpan<T>和Span<T>!这俩类型是提升代码运行效率的利器——它们基于栈分配,能避免很多不必要的内存拷贝与堆分配,完美契合你追求性能的需求。
不过你遇到的问题很常见:.NET Framework 4.7.1并没有原生内置这些类型,它们最初是随.NET Core 2.1和.NET Standard 2.1推出的。要在.NET Framework里用上它们,你需要通过NuGet安装官方的兼容包:
- 打开项目的NuGet包管理器,搜索并安装
System.Memory包(建议选择兼容.NET Framework 4.7.1的最新稳定版本,比如2.0.0及以上版本都支持) - 或者通过Package Manager控制台执行命令:
Install-Package System.Memory -Version 2.0.0
安装完成后,你就可以在代码中正常引用System命名空间下的Span<T>、ReadOnlySpan<T>和Memory<T>了。
不过有个重要的注意点要提醒你:因为Span<T>和ReadOnlySpan<T>是ref struct类型,它们有一些使用限制,比如:
- 不能作为类的字段或属性
- 不能在异步方法的参数、返回值中使用
- 不能被装箱(比如不能赋值给
object类型变量)
如果你的代码场景刚好涉及这些限制,可以考虑用Memory<T>或ReadOnlyMemory<T>作为替代——它们可以在堆上分配,支持异步场景,需要的时候再通过.Span属性转换为Span<T>来操作。
最后,确认你的Visual Studio 15.5.6版本完全支持这些类型的语法,不需要额外升级VS,只要安装好NuGet包就能正常使用。
内容的提问来源于stack exchange,提问作者Murat Oğuzhan
相关产品推荐
相关产品推荐

