Я имею в виду, скажем, у меня есть struct
для представления некоторых данных, и это выглядит так:
struct LilStruct
{
public readonly short A;
public readonly byte B;
public readonly byte C;
public LilStruct(short a, byte b, byte c)
{
A = a;
B = b;
C = c;
}
}
A short
и два значения byte
могут уместиться в 32 бита. Что мне интересно, так это (для целей выравнивания, производительности, чего угодно), если бы на самом деле имело смысл хранить эти данные в следующем формате:
struct LilStruct
{
private readonly uint _value;
public LilStruct(short a, byte b, byte c)
{
_value = ((uint)a << 16) | ((uint)b << 8) | (uint)c;
}
public int A
{
get { return (int)(_value >> 16); }
}
public int B
{
get { return (int)(_value >> 8) & 0x000000FF; }
}
public int C
{
get { return (int)(_value & 0x000000FF); }
}
}
Это бессмысленно? Каковы будут преимущества / недостатки?