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,而 TToInt32,生成的 ReadOnlySpan<Int32> 包含Int64两个值。 这些值在小端体系结构(如 x86)上0x11110F0F和0x01000011。 在大端体系结构中,两个值的顺序将颠倒,即0x01000011,后跟0x11110F0F。

作为另一个示例,如果 TFromInt32ReadOnlySpan<Int32> 则 包含 1、2 和 3 的值,并且 TToInt64,生成的 ReadOnlySpan<Int64> 包含单个值:小端体系结构上的0x0000000200000001,在大端体系结构上0x0000000100000002。

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

适用于