我的意思是,假设我有一个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;
}
}
Ashort
和两个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); }
}
}
这是没有意义的吗?有什么好处/缺点?