List.Contains返回false,即使看起来它应该返回true

Tom*_*asi 3 vb.net contains list

Sub pageload() Handles Me.Load
    Dim bom As New List(Of Car)

    Dim car1 As New Car With {.Name = "Pea", .Year = 2}
    Dim car2 As New Car With {.Name = "Pea", .Year = 2}

    bom.Add(car1)

    MsgBox(bom.Contains(car2))
End Sub
Run Code Online (Sandbox Code Playgroud)

为什么???我的意思是对象具有完全相同的数据,为什么它说它没有被包含?

Meh*_*ari 15

Contains方法通过调用Equals对象上的方法来测试相等性.除非你重写类中的Equals方法Car并实现自己的比较方法,Car否则通过引用标识(完全相同的对象)而不基于它们的内容相等,实例将被视为相等.

您创建的那些对象绝对不是同一个对象.证明:换一个不会改变另一个.