此错误:
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;
简单的问题。为什么呢?
答案 0 :(得分:5)
如果单独失败,没有z
:
(double)x -= (double)y;
仅仅因为赋值运算符的左侧必须是变量,属性或索引器,而不是另一个表达式,就像您的强制类型一样。
然而,你的第二个例子的作业是这样写的:
x_con -= y_con;
当然,因为x_con
是一个变量,所以这很好。
答案 1 :(得分:0)
如果尝试在赋值运算符的左侧执行算术运算,也会发生此错误。 有关详细信息,请参阅Statements, Expressions, and Operators (C# Programming Guide)