.NET Core 的 Span<T> 学习与使用笔记
一、阅读材料
- All About Span: Exploring a New .NET Mainstay
- Span<T> - byte to int conversions
- Span<T> and universal memory management
- Introducing .NET Core 2.1 Flagship Types: Span T and Memory T
- How to use Span<T> and Memory<T>
二、实际使用记录
1. 判断字符串是否为空
传统写法
if(string.IsNullOrEmpty(text)) { return string.Empty; }
使用 Span<T> 的写法
ReadOnlySpan<char> span = markdown.AsSpan(); if (span.IsEmpty) { return string.Empty; }
2. 是否包含指定字符串
传统写法
if (text.Contains("@")) { //... }
使用 Span<T> 的写法
if (span.Contains("@".AsSpan(), StringComparison.Ordinal)) { //... }
3. 去除指定字符串
传统写法
writer.Write(text.Replace("[TOC]", string.Empty));
使用 Span<T> 的写法
var chars = text.AsSpan(); var tocIndex = chars.IndexOf("[TOC]", StringComparison.OrdinalIgnoreCase); var tocLength = "[TOC]".Length; if (tocIndex >= 0) { if (tocIndex == 0) { writer.Write(chars.Slice(tocLength)); } else if (tocIndex == chars.Length - tocLength) { writer.Write(chars.Slice(0, chars.Length - tocLength)); } else { writer.Write(chars.Slice(0, tocIndex)); writer.Write(chars.Slice(tocIndex + tocLength)); } } else { writer.Write(chars); }
【资料搜集】