嗨,在我看来我的对象的属性shouold是2,但在此代码后,仍然是1,为什么?
internal class Program
{
private static void Main(string[] args)
{
MyClass value = new MyClass() { Property = 1 };
value.Property = value.Property++;
Console.WriteLine(value.Property);
Console.ReadKey();
}
}
internal class MyClass
{
public int Property;
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这应该是值.Property = value.Property ++; 首先把值放在什么值和这个对象的增量属性,为什么id不起作用?
这样做是:
value.Property在右侧进行评估(结果为1)并记住结果value.Property(现在等于2)value.Property(它现在再次等于1!)如果您Property使用显式getter和setter 更改为属性并将一些调试代码放入setter中,您将看到它确实更改了值1 - > 2 - > 1.
如果您更改value.Property++到++value.Property,前两个步骤将被逆转,所以我们倒是有:
value.Property(现在等于2)value.Property右侧(它仍然是2)value.Property(它仍然是2)当然,这是不必要的复杂,甚至可以说是错误的.如果你想增加Property,你所要做的就是:
++value.Property;
Run Code Online (Sandbox Code Playgroud)