2008-12-29 11 views

Respuesta

25

Si se refiere al indexador de un Dictionary<string,SomeType>, entonces debería ver una excepción (KeyNotFoundException). Si no desea que se error:

SomeType value; 
if(dict.TryGetValue(key, out value)) { 
    // key existed; value is set 
} else { 
    // key not found; value is default(SomeType) 
} 
+0

Gracias por un ejemplo de cómo usar el out thingy ... ha. – jjnguy

+0

Los ejemplos de TryGetValue y TryParse son probablemente los casos de uso de "salida" más comunes que verá en la mayoría de los códigos cotidianos. –

+0

Cuando estaba leyendo sobre ellos realmente no pude ver un gran uso. Simplemente parece un truco de dos valores de retorno. – jjnguy

14

Como siempre, el documentation es la forma de averiguarlo.

En Excepciones:

 
KeyNotFoundException 
The property is retrieved and key does not exist in the collection 

(Asumo que quiere decir Dictionary<TKey,TValue>, por cierto.)

Tenga en cuenta que esto es diferente de la non-generic Hashtable behaviour.

Para tratar de obtener el valor de una clave cuando no se sabe si existe o no, use TryGetValue.

+0

Gracias. La documentación de .net todavía es un poco difícil para mí y encontrar la información que necesito. – jjnguy

+1

En general es bastante bueno (especialmente la versión fuera de línea, IMO: use el índice), pero debe saber que para encontrar la documentación del indexador normalmente busca la propiedad Item. –

+0

Índice ... bien, lo recordaré. Prefiero dict.get (clave) de Java. Oh, bueno ... Soy una especie de fan-boy. – jjnguy

3

Como alternativa a la utilización de TryGetValue, primero puede comprobar si existe la clave utilizando dict.ContainsKey(key) eliminando así la necesidad de declarar un valor antes de averiguar si usted realmente necesita eso.

4

Creo que se puede probar un

dict.ContainsKey(someKey) 

para comprobar si el diccionario contiene la clave o no.

Gracias

Cuestiones relacionadas