Spesso mi trovo a creare un Dictionary
con una classe di valore non banale (ad esempio List
) e quindi a scrivere sempre lo stesso modello di codice quando compili i dati.Dizionario .NET: ottieni o crea nuovo
Ad esempio:
var dict = new Dictionary<string, List<string>>();
string key = "foo";
string aValueForKey = "bar";
Cioè, voglio inserire "bar"
nella lista che corrisponde alla chiave "foo"
, dove la chiave "foo"
potrebbero non essere mappati a nulla.
Questo è dove io uso il modello sempre ripetere:
List<string> keyValues;
if (!dict.TryGetValue(key, out keyValues))
dict.Add(key, keyValues = new List<string>());
keyValues.Add(aValueForKey);
C'è un modo più elegante di fare questo?
domandecorrelati che non hanno risposte a questa domanda:
- Is there an IDictionary implementation that returns null on missing key instead of throwing?
- Find-or-insert with only one lookup in c# dictionary
- Dictionary returning a default value if the key does not exist
Cosa succede se la chiave esiste ma l'elenco è nullo? –
@Barabba In generale, penso che l'aggiunta di un valore nullo sarebbe considerata inappropriata e ci si aspetterebbe * che il codice bombardi semplicemente e corregge l'errore di aggiungere una chiave nulla, non provando a gestirlo qui. – Servy
@Servy ok, ma cosa succede se otteniamo un risultato Elenco da una fonte di terze parti? L'unica cosa da affrontare è gestire valori nulli, sbaglio? Mi capita tutti i giorni :) –