我发现在C#中,a + = 1不等于a = a + 1.
例如,以下代码编译时没有任何错误:byte b = 10; b + = 5;
而以下代码有一个编译错误:byte b = 10; b = b + 5;
有人能让我知道为什么吗?
因为b + 5
变成整数(Int32)(主要是因为有可能过载)
复合赋值规范如下:
否则,如果所选运算符是预定义运算符,如果所选运算符的返回类型可显式转换为x类型,并且如果y可隐式转换为x类型或运算符是移位运算符,则操作被评估为x =(T)(x op y),其中T是x的类型,除了x仅被计算一次.