¿Es posible utilizar un objeto como clave para un Dictonary<object, ...>
de forma que el diccionario trate los objetos como iguales solo si son idénticos?Cómo utilizar la identidad de un objeto como clave para el Diccionario <K,V>
Por ejemplo, en el código siguiente, quiero Línea 2 para volver 11 en lugar de 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
La implementación diccionario actual utiliza object.Equals()
y object.GetHashCode()
en las teclas; pero estoy buscando un tipo diferente de diccionario que use la identidad del objeto como clave (en lugar del valor del objeto). ¿Existe tal diccionario en .NET o tengo que implementarlo desde cero?
"identidad de objeto" no es un término en .NET - de hecho, su lenguaje está invertido: 'a' y' b' son objetos diferentes (con diferentes direcciones de memoria) pero con el mismo * valor * - su descripción implica que realmente desea usar el valor de la clave, no su dirección de memoria. – Dai