Можно ли использовать объект как ключ для Dictonary<object, ...>
таким образом, чтобы Словарь рассматривал объекты как равные, только если они идентичны?
Например, в приведенном ниже коде я хочу, чтобы строка 2 вернула 11 вместо 12:
Dictionary<object, int> dict = new Dictionary<object, int>();
object a = new Uri("http://www.google.com");
object b = new Uri("http://www.google.com");
dict[a] = 11;
dict[b] = 12;
Console.WriteLine(a == b); // Line 1. Returns False, because a and b are different objects.
Console.WriteLine(dict[a]); // Line 2. Returns 12
Console.WriteLine(dict[b]); // Line 3. Returns 12
Текущая реализация словаря использует object.Equals()
и object.GetHashCode()
на клавишах; но я ищу другой словарь, который использует объект identity как ключ (вместо значения объекта). Есть ли такой словарь в .NET или мне нужно его реализовать с нуля?