我完全不知道该怎么称呼它,所以随时更改标题(如果可以)或建议新标题。 我有以下代码(注意它在生产中没有多大意义,它仅用于演示目的)。
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,那么为什么在应用于属性时会有所不同?我错过了一些明显的东西吗?
答案 0 :(得分:0)
在你的二传手中检查是否
num = value > 20
所以当你这样写:
num = Num = 25;
首先由setter num设置为20,因为它是0,然后再次没有setter将被设置为25.
当你写这个
Num = num = 25;
第一个数字将设置为25而不设置setter,然后setter将设置为10,因为它已经是25。