Ошибка записи массива в структуру - C#
Формулировка задачи:
Привет!
Как записать массив в структуру, в которой поле помечено как fixed?
Ошибка 1 Использование буферов фиксированного размера, содержащихся в нефиксированных выражениях, невозможно. Попробуйте использовать оператор fixed.
Структура выглядит так:
Заполняем ее так:
Соответственно, ошибка:
Ошибка 1 Использование буферов фиксированного размера, содержащихся в нефиксированных выражениях, невозможно. Попробуйте использовать оператор fixed.
[StructLayout(LayoutKind.Explicit, Pack = 1, Size = 16)] public unsafe struct GetData { [FieldOffset(0)] [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public fixed Byte DATA[16]; [FieldOffset(0)] public UInt32 P1; [FieldOffset(4)] public UInt32 P2; [FieldOffset(8)] public UInt32 P3; [FieldOffset(12)] public UInt32 P4; };
USART.GetData bigUART = new USART.GetData(); for (int i = 0; i < 16; i++) bigUART.DATA[i] = (Byte)Data[i];
Решение задачи: «Ошибка записи массива в структуру»
textual
Листинг программы
using System; using System.Runtime.InteropServices; namespace NETExperiments { [StructLayout(LayoutKind.Explicit)] public unsafe struct GetData { [FieldOffset(0)] public fixed Byte Data[16]; [FieldOffset(0)] UInt32 P1; [FieldOffset(4)] UInt32 P2; [FieldOffset(8)] UInt32 P3; [FieldOffset(12)] UInt32 P4; } class Program { static unsafe void Main(string[] args) { GetData bigBytesUART = new GetData(); for (int i = 0; i < 16; i++) { bigBytesUART.Data[i] = (byte)i; } Console.ReadKey(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д