我有点难住这个小小的C#怪癖: 给定变量: Boolean aBoolValue; Byte aByteValue; 以下编译: if (aBoolValue) aByteValue = 1; else aByteValue = 0; 但是这不会: aByteValue = aBoolValue ? 1 : 0; 错误说:“不能隐式地将类型'int'转换为'字节'”。 当然,这个怪物会编译成: aByteValue = aBoolValue ? (byte)1 : (byte)0; 这里发生了什么? 编辑: 使用VS2008,C#3.5