2014-09-21 54 views
0

作为支点一个Int32,为什么C#给我一个错误,当我键入线操作堆叠在C#

++this.pivot %= 21; 

它说,

的左侧必须是变量,属性或索引。

但它应该是完美的,因为一元运算符优先于其他任何事情,并且它的结果在尝试模数之前计算。

不过,它不起作用。如果我把它放在括号内,它也不起作用。

这是为什么?有人有线索吗?

+0

++ X是一个**方法**(基本上),当你有这个时会附加什么:'PlusPlus(X)= 5;'? – 2014-09-21 14:24:16

回答

3

因为您正在尝试做一项任务,但您在左侧有声明。

正如你可能已经知道,这样的说法:

this.pivot %= 21; 

是equivelant到:

this.pivot = this.pivot % 21; 

这里的左侧是一个变量。 ++this.pivot返回的值不是变量。所以你不能指定一个值这样的东西是无效的:

12 = this.pivot % 21; 

// or 
int x = 23; 
++x = x % 20; 

这就是为什么你会收到错误信息。为了解决这个问题,你应该分开你的报表:

++this.pivot; 
this.pivot %= 21; 
+0

为了可读性,您应该单独进行陈述 – dbarnes 2014-09-21 16:10:25

0

不能存储在另一个表达式的结果:

虽然this.pivot是可变的,++this.pivot显然不是,它也在%=操作之前或之后没有占位符this.pivot