MemoryMarshal.Cast 方法

定義

多載

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

將一個簡單型別的唯讀範圍轉換為另一個簡單型別的唯讀範圍。

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

將一個簡單型別的範圍轉換為另一個簡單型別的範圍。

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

來源:
MemoryMarshal.cs
來源:
MemoryMarshal.cs
來源:
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 包含 Managed 物件參考。

LengthReadOnlySpan<T> 的 屬性會超過 MaxValue

備註

TFromTTo 都不能包含 Managed 物件參考。 方法 Cast 會在執行時間執行這項檢查,並在檢查失敗時擲回 ArgumentException

只有在支援未對齊記憶體存取的平臺上,或以其他方式對齊記憶體區塊時,才支援這個方法。

適用於

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

來源:
MemoryMarshal.cs
來源:
MemoryMarshal.cs
來源:
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 包含 Managed 物件參考。

LengthReadOnlySpan<T> 的 屬性會超過 MaxValue

備註

TFromTTo 都不能包含 Managed 物件參考。 方法 Cast 會在執行時間執行這項檢查,並在檢查失敗時擲回 ArgumentException

如果兩種類型的大小不同,轉換會結合或分割值,這會導致長度變更。

例如,如果 TFrom 為 ,則 ReadOnlySpan<Int64> 包含單一值,0x0100001111110F0F 且 TToInt32 ,結果 ReadOnlySpan<Int32> 會包含 Int64 兩個值。 這些值是0x11110F0F,而且0x01000011在小到小的架構上,例如 x86。 在大端架構上,兩個值的順序會反轉,也就是0x01000011,後面接著0x11110F0F。

另一個範例是 ,如果 TFromInt32ReadOnlySpan<Int32> 則 包含 1、2 和 3 的值,而 Int64TTo 結果 ReadOnlySpan<Int64> 會包含單一值:在小端架構上0x0000000200000001,而在大端架構上則0x0000000100000002。

只有在支援未對齊記憶體存取的平臺上,或以其他方式對齊記憶體區塊時,才支援這個方法。

適用於