Me encuentro con el patrón actual con bastante frecuencia en mi código en la actualidadDiccionario devolver un valor predeterminado si la clave no existe
var dictionary = new Dictionary<type, IList<othertype>>();
// Add stuff to dictionary
var somethingElse = dictionary.ContainsKey(key) ? dictionary[key] : new List<othertype>();
// Do work with the somethingelse variable
O a veces
var dictionary = new Dictionary<type, IList<othertype>>();
// Add stuff to dictionary
IList<othertype> somethingElse;
if(!dictionary.TryGetValue(key, out somethingElse) {
somethingElse = new List<othertype>();
}
Ambas formas se sienten bastante rotonda . Lo que realmente me gustaría es algo así como
dictionary.GetValueOrDefault(key)
Ahora, podría escribir un método de extensión para la clase de diccionario que hace esto para mí, pero pensé que podría estar pasando algo que ya existe. Entonces, ¿hay alguna forma de hacer esto de una manera que sea más "fácil de entender" sin escribir un método de extensión en el diccionario?
No estoy seguro de por qué todas las respuestas a continuación son tan complejas. Solo use el operador coalescente: 'string valFromDict = someDict [" someKey "] ?? "someDefaultVal"; ' –
@DylanHunt Aunque eso no funciona para los tipos de valores. ;) – wasatz