MemoryMarshal.Cast 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
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>
要转换的源切片。
返回
转换后的只读范围。
例外
TFrom
或 TTo
包含托管对象引用。
Length新 ReadOnlySpan<T> 的 属性将超过 MaxValue。
注解
TFrom
和 TTo
都不能包含托管对象引用。 方法 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>
要转换的源切片。
返回
转换后的范围。
例外
TFrom
或 TTo
包含托管对象引用。
Length新 ReadOnlySpan<T> 的 属性将超过 MaxValue。
注解
TFrom
和 TTo
都不能包含托管对象引用。 方法 Cast
在运行时执行此检查,并在检查失败时引发 ArgumentException
。
如果两种类型的大小不同,则强制转换将合并或拆分值,这会导致长度发生变化。
例如,如果 TFrom
为 ,则 ReadOnlySpan<Int64>
包含单个值,0x0100001111110F0F 为 Int32TTo
,生成的 ReadOnlySpan<Int32>
包含Int64两个值。 这些值在小端体系结构(如 x86)上0x11110F0F和0x01000011。 在大端体系结构中,两个值的顺序是反转的,即0x01000011,后跟0x11110F0F。
再举一例,如果 TFrom
为 ,则 ReadOnlySpan<Int32>
包含值 1、2 和 3,并且 TTo
为 Int64,生成的 ReadOnlySpan<Int64>
包含单个值:小端体系结构上的0x0000000200000001,在 big-endian Int32体系结构上0x0000000100000002。
仅当支持未对齐内存访问的平台或内存块通过其他方式对齐时,才支持此方法。