这个错误:
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;
简单的问题。为什么?
这个错误:
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;
简单的问题。为什么?
如果仅此一项失败,则没有z
:
(double)x -= (double)y;
仅仅因为赋值运算符的左侧必须是变量、属性或索引器,而不是另一个表达式,就像你的演员一样。
但是,您的第二个示例的作业是这样写的:
x_con -= y_con;
这当然很好,因为x_con
它是一个变量。
如果您尝试在赋值运算符的左侧执行算术运算,也会发生此错误。有关详细信息,请参阅语句、表达式和运算符(C# 编程指南)