Quando si fa qualcosa di simile:C# dizionario TryGetValue con valori int, come evitare il doppio lookup
int value;
if (dict.TryGetValue(key, out value))
{
if (condition)
{
//value = 0; this copies by value so it doesn't change the existing value
dict[key] = 0;
}
}
else
{
dict[key] = 0;
}
C'è un modo posso evitare di ricerca indice per sostituire il valore esistente? Sto già verificando che la chiave esista usando TryGetValue, quindi sembra uno spreco dover recuperare di nuovo il valore per indice.
Su una nota separata, come nella parte else {} del mio codice, è generalmente considerato una buona pratica utilizzare l'indicizzatore quando si aggiungono nuovi valori o si sostituiscono vecchi valori e si aggiunge per rendere chiaro che si sta aggiungendo e non sostituendo ? O dovrei semplicemente usare l'indicizzatore ogni volta? Il modo in cui ho imparato ad usare il dizionario, faccio sempre una ricerca TryGetValue e nella parte else gestisco i casi in cui non esiste alcuna chiave.
non lo stai cercando due volte. –
@ DanielA.White: l'uso dell'indicizzatore fa una ricerca IIRC; p – leppie
la tua (condizione) dipende dal valore? –