在下面的内容中:
public class p
{
short? mID;
short? dID;
}
short id = p.mID ?? -p.dID.Value;
编译器报错:
错误 21:无法隐式将类型“int”转换为“short”。存在显式的转换(是否遗漏了一个强制转换?)
我必须将代码更改为以下内容才能正常工作:
short id = p.mID ?? (short)-p.dID.Value;
就好像编译器在执行 (int)0 - p.dID.Value 这样的操作,或者是 Int16.operator - 返回了 Int32。
p.mID + p.mID
,p.mID / p. mID
,p.mID & p.mID
等许多其他运算符,即使两个操作数都是short
类型,结果也将是int
类型。 - Jeppe Stig Nielsen