对属性进行操作的时候要注意,若属性是一个类型,且类型中有方法的时候,使用该属性的方法并不能更改其内容,应使用其私有字段以更改属性:
自己认为合理的解释为:
1、在使用属性.方法的时候,首先是获取了这个属性GetProperty(一个方法),返回的是这个属性的实例的副本,对此副本的操作并不能反映到其真正的私有字段上
2、参考VS错误:CameraPosition .X=3 属性只是表达式,表达式不能赋值。推理到属性仅是返回的另一个副本
CODE:
Public Property CameraPosition As Vector3 = New Vector3(1, 1, 0)
Dim x As Single = CSng((e.Location.X - LastMousePoint.X) / Me.Width) * 10
CameraPosition.Add(New Vector3(x, y, 0)) '这句不起作用
_CameraPosition.Add(New Vector3(x, y, 0)) '这句起作用