Сколько тип занимает байт?

Язык C#
  1. 6 года назад

    Как сделать так чтобы программа определяла по TypeCode сколько переменная этого типа занимет байт? Ну кроме String. Простые типы - Int, float и пр.

  2. Alexandr_Erohin

    Oct 18 Администратор

    Используйте вспомогательный метод SizeOf класса Marshal:

    int i = 18;
    var v = System.Runtime.InteropServices.Marshal.SizeOf(i);   // 4 байта
  3. Делаю так:

    somevar = Marshal.SizeOf(this.TagType) / 2;  

    TagType свойство типа TypeCode.
    Выдает ошибку

    Невозможно упаковать тип "System.TypeCode" как неуправляемую структуру; невозможно вычислить размер или смещение, имеющие смысл.

    Может надо сделать переменную типа TagType и потом ее SizeOf измерить? Только как сделать переменную типа TypeCode?

  4. Alexandr_Erohin

    Oct 18 Администратор

    Ну тогда нужно извлечь тип данных из TypeCode и найти его размер:

                // Пример переменной типа TypeCode
                TypeCode myVar = TypeCode.Int64;
    
                // Извлекаем тип переменной из TypeCode
                string typename = Enum.GetName(typeof(TypeCode), myVar);
                Type type = Type.GetType("System." + typename);
    
                // Получаем размер
                int size = System.Runtime.InteropServices.Marshal.SizeOf(type);

или зарегистрируйтесь чтобы ответить