Поделиться через


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>

Преобразуемый исходный срез.

Возвращаемое значение

Преобразованный массив с доступом только для чтения.

Исключения

TFrom или TTo содержит ссылки на управляемые объекты.

Свойство Length нового ReadOnlySpan<T> объекта превысит MaxValueзначение .

Комментарии

Ни , ни TFrom не TTo могут содержать ссылки на управляемые объекты. Метод 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>

Преобразованный массив.

Исключения

TFrom или TTo содержит ссылки на управляемые объекты.

Свойство Length нового ReadOnlySpan<T> объекта превысит MaxValueзначение .

Комментарии

Ни , ни TFrom не TTo могут содержать ссылки на управляемые объекты. Метод Cast выполняет эту проверку во время выполнения и выдает исключение ArgumentException в случае сбоя проверки.

Если размеры двух типов различаются, приведение объединяет или разделяет значения, что приводит к изменению длины.

Например, если TFrom имеет значение Int64, ReadOnlySpan<Int64> объект содержит одно значение, 0x0100001111110F0F, а TTo имеет значение Int32, результирующий ReadOnlySpan<Int32> объект содержит два значения. Значения 0x11110F0F и 0x01000011 в архитектуре с небольшим эндианом, например x86. В архитектуре с большим байтом порядок двух значений обратный, т. е. 0x01000011, за которым следует 0x11110F0F.

В качестве другого примера, если TFrom параметр имеет Int32значение , ReadOnlySpan<Int32> содержит значения 1, 2 и 3, а TTo имеет Int64значение , результирующий ReadOnlySpan<Int64> объект содержит одно значение: 0x0000000200000001 на архитектуре с маленьким эндианом и 0x0000000100000002 в архитектуре с большим эндианом.

Этот метод поддерживается только на платформах, поддерживающих неправильный доступ к памяти, или если блок памяти выравнивается другими способами.

Применяется к