2010-04-07 69 views
13

我剛注意到HashTable對象有一個Contains和CotainsKey方法,具有相同的描述。所以他們只是同義詞或者是有幕後.Net Hashtable - Contains vs ContainsKey

+1

問得好! 'Contains'用於實現'IDictionary.Contains',它「確定IDictionary'對象是否包含具有指定鍵的元素」 - 那麼爲什麼'ContainsKey'在那裏? – AakashM 2010-04-07 09:31:06

+0

嗯食物的思想。你爲什麼不打開一個單獨的問題呢。 – Midhat 2010-04-07 09:36:50

回答

18

如果您檢查包含反射器的代碼,您可以看到它直接調用ContainsKey。

的IL是:

.method public hidebysig newslot virtual instance bool Contains(object key) cil managed 
{ 
    .maxstack 8 
    L_0000: ldarg.0 
    L_0001: ldarg.1 
    L_0002: callvirt instance bool System.Collections.Hashtable::ContainsKey(object) 
    L_0007: ret 
} 

這意味着下面的C#

public virtual bool Contains(object key) 
{ 
    return this.ContainsKey(key); 
} 
+0

那麼爲什麼ContainsKey是公開的? – Imad 2015-08-29 12:02:15

8

Contains方法只是調用ContainsKey方法在內部後面SOM edifference - 您可以使用Reflector檢查。