MemoryMarshal.Cast Method
Definition
Overloads
Cast<TFrom,TTo>(ReadOnlySpan<TFrom>) |
Casts a read-only span of one primitive type to a read-only span of another primitive type. |
Cast<TFrom,TTo>(Span<TFrom>) |
Casts a span of one primitive type to a span of another primitive type. |
Cast<TFrom,TTo>(ReadOnlySpan<TFrom>)
Casts a read-only span of one primitive type to a read-only span of another primitive type.
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)
Type Parameters
- TFrom
The type of the source span.
- TTo
The type of the target span.
Parameters
- span
- ReadOnlySpan<TFrom>
The source slice to convert.
Returns
- ReadOnlySpan<TTo>
The converted read-only span.
Exceptions
TFrom
or TTo
contains references or pointers.
Remarks
Neither TFrom
nor TTo
can contain pointers or references. TFrom
and TTo
are checked at runtime in order to preserve type safety.
This method is supported only on platforms that support misaligned memory access or when the memory block is aligned by other means.
Applies to
Cast<TFrom,TTo>(Span<TFrom>)
Casts a span of one primitive type to a span of another primitive type.
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)
Type Parameters
- TFrom
The type of the source span.
- TTo
The type of the target span.
Parameters
- span
- Span<TFrom>
The source slice to convert.
Returns
- Span<TTo>
The converted span.
Exceptions
TFrom
or TTo
contains references or pointers.
Remarks
Neither TFrom
nor TTo
can contain pointers or references. TFrom
and TTo
are checked at runtime in order to preserve type safety.
If the sizes of the two types are different, the cast combines or splits values, which leads to a change in length.
For example, if TFrom
is Int64, the ReadOnlySpan<Int64>
contains a single value, 0x0100001111110F0F, and TTo
is Int32, the resulting ReadOnlySpan<Int32>
contains two values. The values are 0x11110F0F and 0x01000011 on a little-endian architecture, such as x86. On a big-endian architecture, the order of the two values is reversed, i.e. 0x01000011, followed by 0x11110F0F.
As another example, if TFrom
is Int32, the ReadOnlySpan<Int32>
contains the values of 1, 2 and 3, and TTo
is Int64, the resulting ReadOnlySpan<Int64>
contains a single value: 0x0000000200000001 on a little-endian architecture and 0x0000000100000002 on a big-endian architecture.
This method is supported only on platforms that support misaligned memory access or when the memory block is aligned by other means.