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