我有一个具有子对象(Action)的对象(Incident)。事件可能具有零个或一个Action对象。我正在尝试使用以下代码测试Incident对象是否具有子Action对象:
If Not MyIncident.Action Is Nothing
理论上这应该有效,但由于某种原因,子Action对象被神秘地实例化(没有值)。这个实例化似乎发生在If Else语句的Else行上,我在其中检查Incident对象的ID属性,以确定它是否已保存到数据库中:
If MyIncident.ID = 0 Then
Me.cmdAddNote.Visible = False
Me.dgvNotes.Visible = False
Me.DefaultHitsAndMisses()
Else
Me.cmdAddNote.Visible = True
If Not MyIncident.Action Is Nothing Then
Me.cboCorrectiveActionStatus.SelectedValue = Me.MyIncident.Action.Status.ID
End If
End If
MyIncident.Action在If语句的第一行是Nothing,但似乎在这个和Else行之间被实例化(在这个例子中只会执行else的情况)。
如果在填充Incident对象时需要,则实例化Action对象,如果Incident对象没有关联的Action,则显式保留Action对象未实例化。
我希望根据Action对象是否为空来建立一些逻辑,但它似乎不是一个可靠的检查。
任何人都可以对此有所了解吗?
注意:道歉但代码示例似乎不想正确标记!
答案 0 :(得分:1)
你的行动是结构还是阶级?结构不能为空。
答案 1 :(得分:1)
是否使用As New
定义了?或者也许是一个结构?
答案 2 :(得分:0)
哈!我试图变得聪明,实际上是愚蠢的,我的Action属性是每次调用对象时构造一个新的对象实例,并检查数据库中是否有适当的数据。如果无法加载数据,我无法将Action成员变量设置为空。我已修改该属性,如果发生这种情况则不返回任何内容,现在一切都按预期工作。我试图通过'延迟加载'Action对象来变得聪明。那会学到我的。
感谢所有提供帮助的人。