在VB.Net中返回Null引用

时间:2018-06-20 16:05:23

标签: vb.net

我的程序中具有以下方法:

Public Function AddHandlerTo(ByVal compName As String) As System.Object
    For Each item In componentList
        If item.Name.Equals(compName) Then
            AddHandlerTo = item
        End If
    Next
End Function

按预期,由于Return语句的嵌套方式,我在编译器中收到一条警告:

  

函数'AddHandler'并非在所有代码路径上都返回值。使用结果时,运行时可能会出现空引用异常。

现在,此方法的目的是帮助我(如方法名称所示)将处理程序添加到不容易访问的特定对象。本质上,item中的每个componentList是同一父对象的不同子对象。无论如何,这里我的问题并不重要。

我试图弄清楚如何在该方法的末尾添加最后一个Return语句,以便不再出现错误。如果循环中没有符合条件的对象,我希望它返回一个不存在对象或类似对象的异常。尽管我不知道该如何精确地完成任务,但是我通过Google寻找帮助的能力显然令人恐惧。

1 个答案:

答案 0 :(得分:3)

我通常总是这样使用return语句:

Public Function AddHandlerTo(ByVal compName As String) As System.Object
  Dim result As Object = Nothing
  For Each item In componentList
    If item.Name.Equals(compName) Then
        result = item
    End If
  Next
  Return result
End Function

Public Function AddHandlerTo(ByVal compName As String) As System.Object
  For Each item In componentList
    If item.Name.Equals(compName) Then
        Return item
    End If
  Next
  Return Nothing
End Function

无论您在何处调用此函数,都将检查它是否返回内容或不返回任何内容。