在现代C#开发中,Span<T>
与Memory<T>
作为内存管理的利器,为开发者提供了更为高效、灵活且安全的方式来操作内存。本文将通过详尽的代码示例与注释,深入浅出地解析这两个类型的特点与用法,展现它们如何助力提升程序的内存效率。
一、Span<T>:轻量级、堆栈分配的内存视图
注释: Span<T>
是一种结构类型,它提供了一种对连续内存区域的类型安全且内存安全的引用。由于是 ref struct
,它只能在堆栈上分配,这使得它在性能和内存管理上具备显著优势。
创建与使用Span<T>
Csharp
1using System;
2using System.Runtime.InteropServices;
3
4class SpanExample
5{
6 static void Main()
7 {
8 // 示例1:从数组创建Span
9 int[] numbers = { 1, 2, 3, 4, 5 };
10 Span<int> numbersSpan = numbers.AsSpan();
11
12 // 示例2:使用stackalloc直接在堆栈上分配内