Если вы изучите код Contains с отражателем, вы увидите, что он напрямую вызывает 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);
}