在C#中,将属性与基本类型一起使用时似乎很简单。例如,对于具有以下属性的整数:
print(line.decode('utf-8').rstrip())
很容易弄清楚,当用户键入private int _foo = 9;
public int Foo
{
get
{
return _foo;
}
set
{
_foo = value;
}
}
时,将返回_foo的值,并将其分配给变量bar。同样,int bar = Foo
的后备字段_foo的值更改为10。但是,当对象(不引用c#的Foo = 10
关键字)存储在可以具有方法的属性中时,这将变得更加复杂。例如:
object
如果用户要调用,例如TestSample.Method1(),将会发生什么?是先调用getter,然后对返回值调用Method1,还是先调用Method1(),然后将TestSample设置为结果?
答案 0 :(得分:2)
它将先调用吸气剂,然后再调用Method1
。
这是由于.
operator处于关联状态。像x.y.z
这样的表达式总是从左到右求值。这也是合乎逻辑的。调用该方法之前需要评估左操作数(TestSample
),否则运行时如何知道在哪个实例上调用该方法?
如果您难以理解吸气剂和吸气剂的想法。尝试想象获得一个属性来调用Get...
方法,并设置一个属性来调用Set...
方法。例如:
GetTestSample().Method1(); // TestSample.Method1()
SetSomeValue(10); // SomeValue = 10;
这可能会让您更清楚。