在转动Int32时,为什么在键入行
时C#会给我一个错误++this.pivot %= 21;
它说
左侧必须是变量,属性或索引器。
但是它应该是完全正常的,因为一元运算符优先于其他任何东西,并且在尝试模数1之前计算其结果。
但是,它不起作用。如果我把它放在括号内,它也不起作用。
为什么?有人有线索吗?
答案 0 :(得分:3)
因为您正在尝试进行作业,但左侧有声明。
您可能已经知道,这句话:
this.pivot %= 21;
是否适用于:
this.pivot = this.pivot % 21;
这里左侧是变量。 ++this.pivot
返回的值不是变量。所以你不能分配一个这样的值是无效的:
12 = this.pivot % 21;
// or
int x = 23;
++x = x % 20;
这就是您收到错误消息的原因。为了解决这个问题,你应该将你的陈述分开:
++this.pivot;
this.pivot %= 21;
答案 1 :(得分:0)
您不能将表达式的结果存储在另一个表达式中:
虽然this.pivot
是变量,++this.pivot
显然不是,this.pivot
操作之前或之后%=
也没有占位符。