复合运算符隐式转换失败

why*_*heq 2 c# type-conversion

这个错误:

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

z = (double)x -= (double)y;
Run Code Online (Sandbox Code Playgroud)

..这不是错误:

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

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

z = x_con -= y_con;
Run Code Online (Sandbox Code Playgroud)

简单的问题.为什么?

Øyv*_*hen 5

如果单独失败,没有z:

(double)x -= (double)y;
Run Code Online (Sandbox Code Playgroud)

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

然而,你的第二个例子的编写如下:

x_con -= y_con;
Run Code Online (Sandbox Code Playgroud)

这当然是完美的,因为它x_con是一个变量.