.NET Standard 2.0未被微软列为支持Span,为何可正常使用?
为什么.NET Standard 2.0的Xamarin应用能使用System.Span及Reverse()方法
以下是几个关键原因:
Mono运行时的向前兼容实现
Xamarin基于Mono运行时,Mono团队为提升性能,在.NET Standard 2.0环境的运行时中提前实现了System.Span<T>及其相关方法(包括Reverse()),并不完全遵循.NET Standard官方的版本支持要求。System.Memory NuGet包的补充
如果你的项目引用了System.MemoryNuGet包,这个包专门为.NET Standard 2.0等旧平台提供了Span<T>的兼容实现。后续版本的该包还补充了Reverse()这类扩展方法,解决了早期版本方法缺失的问题。C#版本与.NET Standard版本的解耦
C# 7.3已经原生支持Span<T>的语法特性(比如stackalloc),只要项目中能找到Span<T>的类型定义(不管是来自运行时还是NuGet包),就能正常编译和使用,不需要依赖.NET Standard 2.1的支持。官方文档的范围限制
微软官方文档标注的“.NET Standard 2.1+支持”,仅针对官方的.NET Core/.NET Framework标准库实现,而Xamarin使用的Mono运行时属于第三方实现,不受此限制。
内容的提问来源于stack exchange,提问作者Adam Kaczmarski
相关产品推荐
相关产品推荐

