Эти две функции делают одно и то же.
Keys.Contains
существует, потому что Keys
- это ICollection<TKey>
, который определяет метод Contains
.
Стандартная реализация Dictionary<TKey, TValue>.KeyCollection
(класс, а не интерфейс) определяет его как
bool ICollection<TKey>.Contains(TKey item){
return dictionary.ContainsKey(item);
}
Поскольку это реализовано явно, вы даже не можете вызвать его напрямую.
Вы видите либо интерфейс, который я объяснил выше, либо метод расширения LINQ Contains()
, который также будет вызывать собственную реализацию, поскольку она реализует ICollection<T>
.