Ros*_*ose 0 vb.net lambda nullreferenceexception
我将不得不离开Find(),.FirstOrDefault()等,并用循环替换它,除非有人能解释如何处理不返回值的列表?
Public Class Form1
Public Class TestClass
Public Property item1 As String
Public Property item2 As String
End Class
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim myLst As New List(Of TestClass)
myLst.Add(New TestClass With {.item1 = "A", .item2 = "B"})
myLst.Add(New TestClass With {.item1 = "C", .item2 = "D"})
Debug.WriteLine(myLst.Find(Function(n) n.item1 = "X").item1) ' nullreferenceexception, what?
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
您只需处理案例Find或不FirstOrDefault返回任何内容.item1如果没有返回任何内容,则访问该属性,这会导致NullReferenceException.
Public Sub Button2_Click(sender As Object, e As EventArgs)
Dim myLst As New List(Of TestClass)
myLst.Add(New TestClass With {.item1 = "A", .item2 = "B"})
myLst.Add(New TestClass With {.item1 = "C", .item2 = "D"})
Dim tryFindItem = myLst.Find(Function(n) n.item1 = "X")
If tryFindItem IsNot Nothing Then
Debug.WriteLine(tryFindItem.item1)
Else
Debug.WriteLine("Nothing was found!")
End If
End Sub
Run Code Online (Sandbox Code Playgroud)