Estoy tratando de mantener una lista de elementos en una colección con una clave de mi elección. En Java, simplemente usaría Map de la siguiente manera:
class Test {
Map<Integer,String> entities;
public String getEntity(Integer code) {
return this.entities.get(code);
}
}
¿Hay una forma equivalente de hacer esto en C #?
System.Collections.Generic.Hashset
no usa hash y no puedo definir una clave de tipo personalizada
System.Collections.Hashtable
no es una clase genérica
System.Collections.Generic.Dictionary
no tiene un get(Key)
método
c#
java
generics
collections
zmbq
fuente
fuente
O(lg(n))
como Java uno? Creo que noEl diccionario <,> es el equivalente. Si bien no tiene un método Get (...), sí tiene una propiedad indexada llamada Item a la que puede acceder en C # directamente usando la notación de índice:
Si desea utilizar un tipo de clave personalizada, entonces debería considerar implementar IEquatable <> y anular Equals (objeto) y GetHashCode () a menos que la igualdad predeterminada (referencia o estructura) sea suficiente para determinar la igualdad de claves. También debe hacer que su tipo de clave sea inmutable para evitar que sucedan cosas extrañas si se muta una clave después de que se haya insertado en un diccionario (por ejemplo, porque la mutación provocó un cambio en su código hash).
fuente
fuente
TryGetValue
, yaval
que se asignaránull
(es decir,default(string)
si la clave no existe).