Aus*_*tin 2 vb.net setter properties set
正如我所说,我正在设置房产的财产.假设我有一个代表交易的类.在我的课堂上,我有一个代表另一个类的属性,例如:
Public Class PersonRecord
_myPerson = new Person()
Public Property MyPerson as Person
Get
_myPerson = Person.GetAppropriatePerson(Me.PersonID)
return _myPerson
End Get
Set
_myPerson = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
所以我基本上有一个属性,有一个get过滤器,可以获得适当的人.问题是,当我想通过属性设置Person的信息时,VB似乎忽略了我甚至做了它,例如:
Me.myPersonRecord.Person.Name = "Some Name"
Run Code Online (Sandbox Code Playgroud)
但是当我对此进行监视时,在设置属性后,我的值不会改变.我对这种行为感到困惑.有什么我做错了吗?谢谢!
我不知道它是否是一个复制n粘贴错误,但你似乎_myPerson每次都在属性的Get部分覆盖.这很可能会导致你的"某些名字"被覆盖:-)
编辑 do'h,codeape在我面前说了同样的事情:-)
像这样延迟初始化属性的常见模式是执行类似下面的操作,在覆盖之前检查对象是否为null.
Public Property MyPerson as Person
Get
If _myPerson Is Nothing Then
_myPerson = Person.GetAppropriatePerson(Me.PersonID)
End If
return _myPerson
End Get
Run Code Online (Sandbox Code Playgroud)
你必须改变你的_myPerson初始化是一条直线dim _myPerson as Person,而不是dim _myPerson as New Person()太
| 归档时间: |
|
| 查看次数: |
1147 次 |
| 最近记录: |