MemoryMarshal.Cast 方法

定义

重载

Cast<TFrom,TTo>(ReadOnlySpan<TFrom>)

将一种基元类型的只读范围强制转换为另一种基元类型的只读范围。

Cast<TFrom,TTo>(Span<TFrom>)

将一种基元类型的范围强制转换为另一种基元类型的范围。

Cast<TFrom,TTo>(ReadOnlySpan<TFrom>)

Source:
MemoryMarshal.cs
Source:
MemoryMarshal.cs
Source:
MemoryMarshal.cs

将一种基元类型的只读范围强制转换为另一种基元类型的只读范围。

public:
generic <typename TFrom, typename TTo>
 where TFrom : value class where TTo : value class static ReadOnlySpan<TTo> Cast(ReadOnlySpan<TFrom> span);
public static ReadOnlySpan<TTo> Cast<TFrom,TTo> (ReadOnlySpan<TFrom> span) where TFrom : struct where TTo : struct;
static member Cast : ReadOnlySpan<'From (requires 'From : struct)> -> ReadOnlySpan<'o (requires 'o : struct)> (requires 'From : struct and 'o : struct)
Public Shared Function Cast(Of TFrom As Structure, TTo As Structure) (span As ReadOnlySpan(Of TFrom)) As ReadOnlySpan(Of TTo)

类型参数

TFrom

源范围的类型。

TTo

目标范围的类型。

参数

span
ReadOnlySpan<TFrom>

要转换的源切片。

返回

转换后的只读范围。

例外

TFromTTo 包含托管对象引用。

LengthReadOnlySpan<T> 的 属性将超过 MaxValue

注解

TFromTTo 都不能包含托管对象引用。 方法 Cast 在运行时执行此检查,并在检查失败时引发 ArgumentException

仅当支持未对齐内存访问的平台或内存块通过其他方式对齐时,才支持此方法。

适用于

Cast<TFrom,TTo>(Span<TFrom>)

Source:
MemoryMarshal.cs
Source:
MemoryMarshal.cs
Source:
MemoryMarshal.cs

将一种基元类型的范围强制转换为另一种基元类型的范围。

public:
generic <typename TFrom, typename TTo>
 where TFrom : value class where TTo : value class static Span<TTo> Cast(Span<TFrom> span);
public static Span<TTo> Cast<TFrom,TTo> (Span<TFrom> span) where TFrom : struct where TTo : struct;
static member Cast : Span<'From (requires 'From : struct)> -> Span<'o (requires 'o : struct)> (requires 'From : struct and 'o : struct)
Public Shared Function Cast(Of TFrom As Structure, TTo As Structure) (span As Span(Of TFrom)) As Span(Of TTo)

类型参数

TFrom

源范围的类型。

TTo

目标范围的类型。

参数

span
Span<TFrom>

要转换的源切片。

返回

Span<TTo>

转换后的范围。

例外

TFromTTo 包含托管对象引用。

LengthReadOnlySpan<T> 的 属性将超过 MaxValue

注解

TFromTTo 都不能包含托管对象引用。 方法 Cast 在运行时执行此检查,并在检查失败时引发 ArgumentException

如果两种类型的大小不同,则强制转换将合并或拆分值,这会导致长度发生变化。

例如,如果 TFrom 为 ,则 ReadOnlySpan<Int64> 包含单个值,0x0100001111110F0F 为 Int32TTo ,生成的 ReadOnlySpan<Int32> 包含Int64两个值。 这些值在小端体系结构(如 x86)上0x11110F0F和0x01000011。 在大端体系结构中,两个值的顺序是反转的,即0x01000011,后跟0x11110F0F。

再举一例,如果 TFrom 为 ,则 ReadOnlySpan<Int32> 包含值 1、2 和 3,并且 TToInt64,生成的 ReadOnlySpan<Int64> 包含单个值:小端体系结构上的0x0000000200000001,在 big-endian Int32体系结构上0x0000000100000002。

仅当支持未对齐内存访问的平台或内存块通过其他方式对齐时,才支持此方法。

适用于