http://book.51cto.com/art/200910/158498.htm
C#允许属性像字段那样使用,只是不允许将它们作为ref或out参数值来传递。ref和out参数值在内部实现时,需要将内存地址传给目标方法。但是,由于属性可能是没有支持字段的虚字段,也有可能是只读/只写的,因此不可能传递其基础存储的地址。所以,你不能将属性作为ref或out参数值来传递。同样的道理也适用于方法调用。如果需要将一个属性或者方法调用作为ref或out参数值来传递,首先必须将值复制到一个变量中,然后传递该变量。方法调用结束之后,再将变量的值赋回属性。