关于Span的.NET应用,有哪些新亮点值得探索?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1914个文字,预计阅读时间需要8分钟。
关于Span的介绍:探索.NET新支柱
想要开发一个独特的排序算法程序?
关于 Span 的一切:探索新的 .NET 明星
docs.microsoft.com/en-us/archive/msdn-magazine/2018/january/csharp-all-about-span-exploring-a-new-net-mainstay
想象一下你正在发布一个特别的排序算法程序,它可以在内存中就地处理数据。你会希望发布一个获得一个数组参数,并提供在数组之上操作 T[] 的实现。如果调用方可以获得这个数组,并且是希望对整个数组进行排序,那么这种方式特别棒。但是,如果调用方仅仅希望对数组的部分进行排序呢,你可能又会出提供一个重载的实现,通过 offset 和 count 参数来支持。不过,如果你又希望支持内存中不是数组的数据,比如说,而是来自原生代码呢?或者是在堆栈上的数据,你只有指向它的指针和长度呢?你又如何开发你的排序方法来操作此类任意的内存区域,而且仍然与处理整个数组,或者数组的子集一样好呢?还要考虑到处理托管数组与非托管数组一样好呢?
或者,我们看另一个例子。你正在实现一个对 System.String 的处理。例如是一个特别的解析方法。你希望获得一个字符串参数,然后提供提供处理字符串的实现。但是,如果你希望还要支持处理该字符串的子集呢?String.Substring() 方法可以用来抽取出感兴趣的一部分字符串,但是这会牵涉到昂贵的操作,导致字符串分配和内存复制。你也可以这样做,如在数组示例中那样,通过一个 offset 和 count 参数来处理。
本文共计1914个文字,预计阅读时间需要8分钟。
关于Span的介绍:探索.NET新支柱
想要开发一个独特的排序算法程序?
关于 Span 的一切:探索新的 .NET 明星
docs.microsoft.com/en-us/archive/msdn-magazine/2018/january/csharp-all-about-span-exploring-a-new-net-mainstay
想象一下你正在发布一个特别的排序算法程序,它可以在内存中就地处理数据。你会希望发布一个获得一个数组参数,并提供在数组之上操作 T[] 的实现。如果调用方可以获得这个数组,并且是希望对整个数组进行排序,那么这种方式特别棒。但是,如果调用方仅仅希望对数组的部分进行排序呢,你可能又会出提供一个重载的实现,通过 offset 和 count 参数来支持。不过,如果你又希望支持内存中不是数组的数据,比如说,而是来自原生代码呢?或者是在堆栈上的数据,你只有指向它的指针和长度呢?你又如何开发你的排序方法来操作此类任意的内存区域,而且仍然与处理整个数组,或者数组的子集一样好呢?还要考虑到处理托管数组与非托管数组一样好呢?
或者,我们看另一个例子。你正在实现一个对 System.String 的处理。例如是一个特别的解析方法。你希望获得一个字符串参数,然后提供提供处理字符串的实现。但是,如果你希望还要支持处理该字符串的子集呢?String.Substring() 方法可以用来抽取出感兴趣的一部分字符串,但是这会牵涉到昂贵的操作,导致字符串分配和内存复制。你也可以这样做,如在数组示例中那样,通过一个 offset 和 count 参数来处理。

