Подтвердить что ты не робот

Получить размер структуры в С#

Возможный дубликат:
Как проверить количество байтов, потребляемых моей структурой?

У меня есть структура в упакованной форме

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct test
{
  public int a;
  public uint16 b;
}

Как получить размер структуры, поскольку компилятор заявляет, что sizeof может использоваться только в небезопасном контексте?

Спасибо.

4b9b3361

Ответ 1

Метод SizeOf делает трюк.

int size = System.Runtime.InteropServices.Marshal.SizeOf(typeof(Point));

Ответ 2

Вы помещаете оператор sizeof в небезопасный контекст, как это предлагает компилятор?

Что-то вроде этого я предполагаю:

int size;
unsafe
{
    size=sizeof(Test);
}

Но я не уверен, действительно ли ты хочешь это сделать. Я бы использовал обычный сериализатор вместо структур с конкретным макетом для этого. IMO, вы должны использовать такие структуры только для встроенного взаимодействия, а не для простой сериализации.

И глядя на документацию функции SizeOf, маршаллинг может испортиться и с размером (не в этом примере).