.NET中的Span类和Memory类介绍
在.NET中,Span
Span类
Span
public ref struct Span<T>
{
// 构造函数
public Span(T[] array);
public Span(T[] array, int start, int length);
public Span(ref T start, int length);
// 属性
public int Length { get; }
public ref T this[int index] { get; }
public Span<T> Slice(int start);
public Span<T> Slice(int start, int length);
// 方法
public void Fill(T value);
public bool TryCopyTo(Span<T> destination);
public bool TryCopyTo(ref T destination, int length);
public bool TryCopyFrom(ReadOnlySpan<T> source);
public bool TryCopyFrom(ReadOnlySpan<T> source, int length);
}
Span
byte[] data = new byte[1024];
Span<byte> span = new Span<byte>(data);
span[0] = 1;
在上面的代码中,我们创建了一个名为data的字节数组,并使用Span
Memory类
Memory
public readonly struct Memory<T>
{
// 构造函数
public Memory(T[] array);
public Memory(T[] array, int start, int length);
public Memory(ReadOnlyMemory<T> readOnlyMemory);
// 属性
public int Length { get; }
public Span<T> Span { get; }
public ReadOnlyMemory<T> Slice(int start);
public ReadOnlyMemory<T> Slice(int start, int length);
// 方法
public bool TryCopyTo(Memory<T> destination);
public bool TryCopyTo(Span<T> destination);
public bool TryCopyTo(ref T destination, int length);
public bool TryCopyFrom(ReadOnlyMemory<T> source);
public bool TryCopyFrom(ReadOnlyMemory<T> source, int length);
}
Memory
byte[] data = new byte[1024];
Memory<byte> memory = new Memory<byte>(data);
byte value = memory.Span[0];
在上面的代码中,我们创建了一个名为data的字节数组,并使用Memory
示例说明
以下是两个示例,示例说明如何在.NET中使用Span
示例1:使用Span类
以下是使用Span
byte[] data = new byte[1024];
Span<byte> span = new Span<byte>(data);
span[0] = 1;
在上面的代码中,我们创建了一个名为data的字节数组,并使用Span
示例2:使用Memory类
以下是使用Memory
byte[] data = new byte[1024];
Memory<byte> memory = new Memory<byte>(data);
byte value = memory.Span[0];
在上面的代码中,我们创建了一个名为data的字节数组,并使用Memory
结论
本攻略介绍了.NET中的Span
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.net中的Span