所有
我目前正在尝试实现一些类似的东西
dim l_stuff as List(of Stuff) dim m_stuff as new Stuff m_stuff.property1 = 1 m_stuff.property2 = "This" if not l_stuff.exists(m_stuff) then l_stuff.add(m_stuff) end if
当Exist方法正在寻找Stuff的谓词时,这显然会失败.
任何人都可以完全解释谓词以及我如何实现我在这里尝试做的事情.
我试过用
if not l_stuff.contains(m_stuff) then l_stuff.add(m_stuff) end if
但是,这不会检测到idenitcal条目并在列表中输入副本
谢谢
List(Of T).Contains
是你应该使用的方法.正如你所说,存在期望一个谓词.当然,对于.Contains按预期工作,您需要覆盖该Equals()
方法,以及GetHashCode()
.
List(Of T).Exists
期望一个函数在传递T类型的项时返回一个布尔值,其中T(在您的情况下)是Stuff类型.所以,你可以写一个看起来像这样的方法:
If Not l_stuff.Exists(Function(x) x.property1 = m_stuff.property1 And _ x.property2 = m_stuff.property2) Then
等等.