复合运算符隐式转换失败

时间:2012-06-25 07:12:47

标签: c# type-conversion

此错误:

double z;
int? x = 0;
int? y = 0;

z = (double)x -= (double)y;

..这不是错误:

double z;
int? x = 0;
int? y = 0;

double x_con = (double)x;
double y_con = (double)y;

z = x_con -= y_con;

简单的问题。为什么呢?

2 个答案:

答案 0 :(得分:5)

如果单独失败,没有z

(double)x -= (double)y;

仅仅因为赋值运算符的左侧必须是变量,属性或索引器,而不是另一个表达式,就像您的强制类型一样。

然而,你的第二个例子的作业是这样写的:

x_con -= y_con;

当然,因为x_con是一个变量,所以这很好。

答案 1 :(得分:0)

如果尝试在赋值运算符的左侧执行算术运算,也会发生此错误。 有关详细信息,请参阅Statements, Expressions, and Operators (C# Programming Guide)