2008-11-28 58 views
8

所有使用List.Exists和謂詞正確

目前我想實現沿

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 

行這顯然無法爲存在方式正在尋找的東西謂詞的東西。

任何人都可以完全解釋謂詞,我可以如何實現我在這裏要做的。

我曾嘗試使用

if not l_stuff.contains(m_stuff) then 
    l_stuff.add(m_stuff) 
end if 

但是這不檢測idenitcal進入和進入副本到列表

感謝

回答

20

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 

等等。

+1

+ 1很好解釋。 – 2012-06-10 02:38:38