Ошибка записи массива в структуру - 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();
}
}
}