Why can fields be used as out/ref parameters and not properties?
本问题已经有最佳答案,请猛点这里访问。
当我们将字段作为out/ref参数传递时,是什么使属性和字段不同?两者的区别是内存分配吗?
最大的区别是属性或索引器不能作为
这是因为属性不一定有后备存储器——例如,可以动态计算属性。
由于传递
属性根本不像字段,它们就像方法。
这是一个字段;它没有任何逻辑。
1 | private int _afield; |
这是一个属性,它定义了getter和setter。getter和setter是方法。
1 2 3 4 5 6 7 8 9 10 11 | public int AField { get { return _aField; } set { _aField = value; } } |
这是默认属性。它和以前的属性和字段完全一样,只是它为您做了很多工作
2描述属性的最佳方法是使用"getter"和"setter"方法的习惯用法。
当您访问一个属性时,实际上是在调用"get"方法。
爪哇
1 2 3 4 5 6 7 8 9 10 11 12 13 | private int _myField; public int getMyProperty() { return _myField; } public int setMyProperty(int value) { _myField = value; } int x = getMyProperty(); // Obviously cannot be marked as"out" or"ref" |
C.*
4