C#: маршалинг структуры, которая содержит массивы

var comps = [ 2008, 10, 8, 00, 16, 34, 254 ];
var d = eval("new Date(" + comps.join(",") + ");");
6
задан 21 September 2009 в 15:15
поделиться

2 ответа

Для массивов попробуйте использовать ключевое слово fixed :

public fixed byte DeviceInfo[MAX_LINK_DEVINFO];
public fixed byte Reserved[40];
8
ответ дан 8 December 2019 в 18:39
поделиться

всякий раз, когда я инициализирую структуру, Поля Name, DeviceInfo и Reserved все установлены на null

Это правильно, и ваше определение мне кажется нормальным (BTW, вам не нужно [MarshalAs] в примитивных полях, поведение по умолчанию - делать то, что вы указали там). Поскольку ваши поля массива имеют значение null , маршалер ничего не сделает с ними при маршалинге вашей структуры в неуправляемую память, но он создаст строки и массивы при демаршалинге.

3
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: