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


SpanMarshaller<T,TUnmanagedElement> Класс

Определение

Важно!

Этот API несовместим с CLS.

Поддерживает маршалирование из управляемого Span<T> значения в непрерывный собственный массив неуправляемых значений элементов.

generic <typename T, typename TUnmanagedElement>
 where TUnmanagedElement : value classpublic ref class SpanMarshaller abstract sealed
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.Marshalling.ContiguousCollectionMarshaller]
[System.Runtime.InteropServices.Marshalling.CustomMarshaller(typeof(System.Span<>), System.Runtime.InteropServices.Marshalling.MarshalMode.Default, typeof(System.Runtime.InteropServices.Marshalling.SpanMarshaller<,>))]
[System.Runtime.InteropServices.Marshalling.CustomMarshaller(typeof(System.Span<>), System.Runtime.InteropServices.Marshalling.MarshalMode.ManagedToUnmanagedIn, typeof(System.Runtime.InteropServices.Marshalling.SpanMarshaller<,>+ManagedToUnmanagedIn))]
public static class SpanMarshaller<T,TUnmanagedElement> where TUnmanagedElement : struct
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.Marshalling.ContiguousCollectionMarshaller>]
[<System.Runtime.InteropServices.Marshalling.CustomMarshaller(typeof(System.Span<>), System.Runtime.InteropServices.Marshalling.MarshalMode.Default, typeof(System.Runtime.InteropServices.Marshalling.SpanMarshaller<,>))>]
[<System.Runtime.InteropServices.Marshalling.CustomMarshaller(typeof(System.Span<>), System.Runtime.InteropServices.Marshalling.MarshalMode.ManagedToUnmanagedIn, typeof(System.Runtime.InteropServices.Marshalling.SpanMarshaller<,>+ManagedToUnmanagedIn))>]
type SpanMarshaller<'T, 'UnmanagedElement (requires 'UnmanagedElement : struct)> = class
Public Class SpanMarshaller(Of T, TUnmanagedElement)

Параметры типа

T

Тип управляемого элемента диапазона.

TUnmanagedElement

Неуправляемый тип для элементов диапазона.

Наследование
SpanMarshaller<T,TUnmanagedElement>
Атрибуты

Комментарии

Класс, Span<T> маршалированные с помощью этого маршализатора GetReference<T>(Span<T>), будет соответствовать семантике . В частности, этот маршализатор передает не-значениеnull для диапазона нулевой длины, если диапазон был создан с не-значениемnull .

Методы

AllocateContainerForManagedElements(TUnmanagedElement*, Int32)

Выделяет место для хранения управляемых элементов.

AllocateContainerForUnmanagedElements(Span<T>, Int32)

Выделяет пространство для хранения неуправляемых элементов.

Free(TUnmanagedElement*)

Освобождает выделенную неуправляемую память.

GetManagedValuesDestination(Span<T>)

Возвращает диапазон пространства, в котором должны храниться элементы управляемой коллекции.

GetManagedValuesSource(Span<T>)

Возвращает диапазон элементов управляемой коллекции.

GetUnmanagedValuesDestination(TUnmanagedElement*, Int32)

Возвращает диапазон пространства, в котором должны храниться неуправляемые элементы коллекции.

GetUnmanagedValuesSource(TUnmanagedElement*, Int32)

Возвращает диапазон элементов собственной коллекции.

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