我完全不知道该怎么称呼它,所以请随意更改标题(如果可以的话)或建议一个新标题。我有以下代码(请注意,它在生产中没有多大意义,仅用于演示目的)。
static float num = 30f;
static float Num
{
get { return num; }
set { num = value > 20 ? 10f : value; }
}
void Foo()
{
num = Num = 25;
print(num + " " + Num);
}
void Foo2()
{
Num = num = 25;
print(num + " " + Num);
}
为什么 Foo() 打印“25 25”,而 Foo2() 打印“10 10”?
我阅读 Foo1 的方式是:
将 Num 设置为 25(将 num 设置为 10),然后将 num 设置为 Num(返回 num,即 10)
我将 Foo2 读为:
将 num 设置为 25(之前是 30),现在将 Num 设置为 num(这会将 num 设置为 10)
为什么它们不同?
在字段上使用它,即“a = b = 5;” 和“b = a = 5;” 将导致两者都设置为 5,那么为什么在应用于属性时会有所不同?我错过了一些明显的东西吗?