属性在存储对象时如何工作?

时间:2018-08-05 00:21:33

标签: c# oop properties

在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设置为结果?

1 个答案:

答案 0 :(得分:2)

它将先调用吸气剂,然后再调用Method1

这是由于. operator处于关联状态。像x.y.z这样的表达式总是从左到右求值。这也是合乎逻辑的。调用该方法之前需要评估左操作数(TestSample),否则运行时如何知道在哪个实例上调用该方法?

如果您难以理解吸气剂和吸气剂的想法。尝试想象获得一个属性来调用Get...方法,并设置一个属性来调用Set...方法。例如:

GetTestSample().Method1(); // TestSample.Method1()
SetSomeValue(10); // SomeValue = 10;

这可能会让您更清楚。