代码之家  ›  专栏  ›  技术社区  ›  Skitzafreak

在vb.net中返回空引用

  •  0
  • Skitzafreak  · 技术社区  · 7 年前

    我的程序中有以下方法:

    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 是同一父对象的另一个子。不管怎样,这对我的问题并不重要。

    我在想怎么加期末考试 返回 语句结束的方法,使我不再得到错误。如果循环中没有与标准匹配的对象,我希望它返回一个没有对象存在的异常或类似的东西。尽管我不知道如何才能做到这一点,而且我通过谷歌寻求帮助的能力显然是可怕的。

    1 回复  |  直到 7 年前
        1
  •  3
  •   LarsTech    7 年前

    我通常使用这样的返回语句:

    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
    

    在调用此函数的任何地方,都会检查它是否返回了某些内容或没有返回任何内容。