Безымянный указатель на структуру - 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;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д