为什么使用++;在c#中有什么不同?
我有一个类为什么使用++;在c#中有什么不同?,c#,C#,我有一个类演绎,它的属性序列为int类型: public class Deduction { private int _sequence; public int Sequence { get { return _sequence; } set { _sequence = value; } } ... } 现在我有一个演绎类型的对象,其序列属性的值为1: Deduction deduction = new Deduction(); dedu
演绎
,它的属性序列
为int
类型:
public class Deduction
{
private int _sequence;
public int Sequence
{
get { return _sequence; }
set { _sequence = value; }
}
...
}
现在我有一个演绎
类型的对象,其序列
属性的值为1:
Deduction deduction = new Deduction();
deduction.Sequence = 1;
现在我有了一个int
类型的变量newSequence
,其值为-1:
int newSequence = -1;
我想取extraction
对象的Sequence
属性的当前值,添加1并将结果存储在newSequence
变量中。所以我写了这段代码:
newSequence = deduction.Sequence++;
但我发现上面的代码将演绎
对象的序列
属性的值从1更改为2,而我预期它将保持在1
而且上面的代码将newSequence
的值从-1更改为1,而我希望它将更改为2
这很奇怪。有人能解释一下这是怎么回事吗
谢谢
++
增加它旁边的值。如果在变量/属性后面有运算符(++
),则变量在赋值后递增1。如果赋值前有++
,则变量在赋值前增加
看起来你要找的是newSequence=declutation.Sequence+1代码>来自:
递增运算符(++)将其操作数递增1。增量
运算符可以出现在其操作数之前或之后:++变量和
变量++。备注第一种形式是前缀递增操作。
运算的结果是操作数完成后的值
已递增。第二种形式是后缀增量操作。
操作的结果是操作数在被删除之前的值
已递增。数字和枚举类型已预定义
增量运算符。用户定义的类型可以重载++运算符。
枚举中通常允许对整型进行操作
你可能忽略了这一点。通过将操作数放在末尾,赋值就完成了,然后是增量。++
是变量后面的post增量运算符,这意味着增量发生在赋值之后
newSequence = deduction.Sequence++;
您正在将扣减.Sequence的旧值赋值给newSequence
,然后递增扣减的值。Sequence
如下:
newSequence = deduction.Sequence++;
相当于:
newSequence = deduction.Sequence;
deduction.Sequence = deduction.Sequence + 1;
现在更有意义了吗
如果您这样做:
newSequence = ++deduction.Sequence;
它变成这样:
deduction.Sequence = deduction.Sequence + 1;
newSequence = deduction.Sequence;
正如其他人所说,您可能不希望更改演绎.Sequence
,因此您希望使用以下方法:
newSequence = deduction.Sequence + 1;
你读过吗?@AlexM。你应该解释一下什么是不好的。你可以把variable++
读作:“首先给我变量的值,然后是增量变量”,而++variable
可以读作:“增量变量,然后给我它的(已经增量的)值”。@PieterWitvoet这是不正确的。变量始终递增,然后返回一个值。改变的是它是返回原始值还是增量值。当考虑多个侧面效应的语句时,这一点很重要。C++的行为与此不同吗?