gpt4 book ai didi

c# - 什么值将具有我的对象的属性?

转载 作者:行者123 更新时间:2023-11-30 19:12:55 27 4
gpt4 key购买 nike

嗨,我认为我对象的属性应该是 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;
}

在我看来这应该是 value.Property = value.Property++;先把这个对象的value和increment属性放到value里,为什么id不行?

最佳答案

它的作用是:

  1. 计算右侧的 value.Property(结果为 1)并记住结果
  2. 增加 value.Property(现在等于 2)
  3. 将记住的结果分配给 value.Property(现在又等于 1!)

如果您将 Property 更改为具有显式 getter 和 setter 的属性,并将一些调试代码放入 setter 中,您会发现它确实会更改值 1 -> 2 -> 1。

如果将 value.Property++ 更改为 ++value.Property,则前两个步骤将相反,因此我们将:

  1. 增加 value.Property(现在等于 2)
  2. 计算右边的value.Property(还是2)
  3. 将第2步的结果赋给value.Property(还是2)

当然,这是不必要的复杂,甚至可以说是错误的。如果你想增加 Property,你所要做的就是:

++value.Property;

关于c# - 什么值将具有我的对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com