Безымянный указатель на структуру - C#
Формулировка задачи:
Есть необходимость передавать в метод параметр ссылочного типа
но вся проблема в том что в методе его необходимо закрепить оператором fixed
но увы как всегда не всё складывается как хотелось бы.
В метод будет передаваться только первый элемент массива структур.
но первым в структуре может быть и не Single, а например byte, если бы в структуре первым был всегда один и тот же базовый тип, то ссылку на него получить легко void METOD(ref Single data) и это работает, проблема
как раз в том что нужно чтоб метод принимал параметр любого базового типа, не зная что за тип на самом деле.
Ну как то так в двух словах, помогите кто может!!
void METOD(ref void data) или void METOD(ref ValueType data)
void METOD(ref ValueType data) { fixed(ValueType* ptr = &data) { //передача в неуправляемую библиотеку } }
struct Data { public Single; public Single; } Data[] ARR = new Data[10]; METOD(ref ARR[0])
Перегрузку метода не предлагать.
Решение задачи: «Безымянный указатель на структуру»
textual
Листинг программы
[StructLayout(LayoutKind.Explicit)] public struct tioController { [FieldOffset(0)] public Byte[] All; [FieldOffset(0)] public UInt16 Pwd; [FieldOffset(2)] public UInt16 NOb; [FieldOffset(4)] public UInt32 Tim; [FieldOffset(8)] public UInt16 Xco; [FieldOffset(12)] public UInt16 Yco; [FieldOffset(16)] public Byte InP; [FieldOffset(17)] public Byte Out; [FieldOffset(18)] public UInt16 An0; [FieldOffset(20)] public UInt16 An1; [FieldOffset(22)] public UInt16 An2; [FieldOffset(24)] public UInt16 Cn1; [FieldOffset(26)] public UInt16 Cn2; [FieldOffset(28)] public UInt16 Cn3; [FieldOffset(30)] public UInt16 Cn4; [FieldOffset(32)] public UInt16 An3; [FieldOffset(34)] public UInt16 CSp; [FieldOffset(36)] public UInt16 MSp; [FieldOffset(38)] public Byte Sta; [FieldOffset(39)] public Byte Mod; [FieldOffset(40)] public UInt16 Cou; [FieldOffset(42)] public UInt16 Se2; [FieldOffset(44)] public UInt16 Se3; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д