我不希望提高性能或内存使用率,这个问题纯粹是出于好奇。
主要问题
给定以下类,C# 编译器(Mono + .NET)会将这两个short
变量打包成 4 个字节,还是它们会消耗 8 个字节(对齐)?
public class SomeClass {
short a;
short b;
}
次要问题
如果上述问题的答案不是 4 个字节,那么以下替代方案是否会提供任何优势(其中SomeClass
大量使用):
// Warning, my bit math might not be entirely accurate!
public class SomeClass {
private int _ab;
public short a {
get { return _ab & 0x00ff; }
set { _ab |= value & 0x00ff;
}
public short b {
get { return _ab >> 8; }
set { _ab |= value << 8; }
}
}