【发布时间】:2011-01-18 00:36:37
【问题描述】:
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
为什么???我的意思是对象具有完全相同的数据,为什么它说它不包含?
【问题讨论】:
-
你有两辆车。两者恰好是相同的颜色和型号。第一个在名单上,第二个不在。非常简单。
-
那么 GetHashCode 呢?它也不一样。它实际上是做什么的?
-
确实如此。您正在将
Car视为值类型。从“现实世界”的角度来考虑(毕竟,OOP 就是在现实世界对象之后建模数据):如果我开着红色丰田凯美瑞开车到你家,然后在离开时闯入 你的 红色丰田凯美瑞开回家,我是不是开着我来的那辆车离开的?