使用ReadOnlySpan实现高性能和零内存分配的LikeString函数
继上一篇文章"在.NET Core,除了VB的LikeString,还有其它方法吗?(四种LikeString实现分享)"分享了四种实现方式,但这些实现方式在执行性能和内存分配性能上并不令人满意。
那么是否有更好的实现方法呢?答案是肯定的。
今天我们将介绍
ReadOnlySpan<T>
,这是一个非常实用的结构类型。它是在
.NET Core 2.1
中新引入的类型,与它一同被引入的类型还有:
- System.Span : 以类型安全和内存安全的方式表示任意内存的连续部分;
- System.ReadOnlySpan : 表示任意连续内存区域的类型安全和内存安全只读表示形式;
- System.Memory : 表示一个连续的内存区域;
-
System.ReadOnlyMemory
: 类似
ReadOnlySpan
,此类型表示内存的连续部分,但它不是 ByRef 类型;注: ByRef 类型指的是 ref readonly struct 。
接下来,让我们来看看如何使用
ReadOnlySpan
实现高性能和零内存分配的
LikeString
函数吧!
#nullable enable
using System;
namespace AllenCai
{
/// <summary>
/// 这是一个模仿Microsoft.VisualBasic.CompilerServices.LikeOperator.LikeString方法,<br />
/// 实现支持*和?通配符和支持忽略大小写规则以及区域无关性的匹配。<br />
/// 该实现的目的是为了减少内存分配,提高性能。
/// </summary>
public class ZeroMemAllocLikeOperator
{
// 省略部分代码
}
}
PS: 以上代码在 .NET Standard 2.1 项目使用,可直接编译通过。
在 .NET Standard 2.0 项目中,需要额外引入
System.Memory
这个 NuGet 包,且需要将
LangVersion
(C#语言版本)更改为
8.0
或更高(通常使用
default
或
latest
也可以)。
以上就是电脑114游戏给大家带来的关于使用ReadOnlySpan实现高性能和零内存分配的LikeString函数全部内容,更多攻略请关注电脑114游戏。
电脑114游戏-好玩游戏攻略集合版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!