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>
Преобразуемый исходный срез.
Возвращаемое значение
Преобразованный массив.
Исключения
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 в архитектуре с большим эндианом.
Этот метод поддерживается только на платформах, поддерживающих неправильный доступ к памяти, или если блок памяти выравнивается другими способами.