如果我宣布这样的枚举......
public enum MyEnum : byte {
Val1,
Val2
}
Run Code Online (Sandbox Code Playgroud)
......它正在发挥作用.
如果我宣布这样的枚举......
public enum MyEnum : System.Byte {
Val1,
Val2
}
Run Code Online (Sandbox Code Playgroud)
......它不起作用.编译抛出:
错误CS1008:键入byte,sbyte,short,ushort,int,uint,long或ulong expected
由于byte是实际类型的别名System.Byte,为什么我不能使用第二个声明?
有什么意义
enum SomeEnum : byte // <----
{
SomeValue = 0x01,
...
}
Run Code Online (Sandbox Code Playgroud)
当你必须进行转换只是为了将它分配给与枚举基础类型相同类型的变量?
byte b = (byte)SomeEnum.SomeValue;
Run Code Online (Sandbox Code Playgroud) Intel的32位处理器(如Pentium)具有64位宽的数据总线,因此每次访问可获取8个字节.基于此,我假设这些处理器在地址总线上发出的物理地址总是8的倍数.
首先,这个结论是否正确?
其次,如果它是正确的,那么应该将数据结构成员对齐在8字节边界上.但我见过人们在这些处理器上使用4字节对齐.
他们怎么能这样做呢?
在阅读70-536培训套件时,它指出:
运行时优化32位整数类型(Int32)的性能,因此将这些类型用于计数器和其他经常访问的整数变量.
这仅适用于32位环境吗?Int64是在64位环境中接管,还是Int32仍然是更好的选择?