Ответ 1
Метод SizeOf
делает трюк.
int size = System.Runtime.InteropServices.Marshal.SizeOf(typeof(Point));
Возможный дубликат:
Как проверить количество байтов, потребляемых моей структурой?
У меня есть структура в упакованной форме
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct test
{
public int a;
public uint16 b;
}
Как получить размер структуры, поскольку компилятор заявляет, что sizeof может использоваться только в небезопасном контексте?
Спасибо.
Метод SizeOf
делает трюк.
int size = System.Runtime.InteropServices.Marshal.SizeOf(typeof(Point));
Вы помещаете оператор sizeof в небезопасный контекст, как это предлагает компилятор?
Что-то вроде этого я предполагаю:
int size;
unsafe
{
size=sizeof(Test);
}
Но я не уверен, действительно ли ты хочешь это сделать. Я бы использовал обычный сериализатор вместо структур с конкретным макетом для этого. IMO, вы должны использовать такие структуры только для встроенного взаимодействия, а не для простой сериализации.
И глядя на документацию функции SizeOf
, маршаллинг может испортиться и с размером (не в этом примере).