ho dizionario azione definita come:Utilizzando operatore ternario: "solo l'assegnazione, chiamata, incremento ..."
var actions = new Dictionary<string, Action<string, string>>();
ho messo lì azioni come:
actions.Add("default", (value, key) => result.Compare(value, properties[key], Comparers.SomeComparer, key));
...
Sto usando questo codice per eseguirlo:
if (actions.ContainsKey(pair.Key))
{
actions[pair.Key](pair.Value, pair.Key);
}
else
{
actions[""](pair.Value, pair.Key);
}
funziona bene, ma ho voluto usare '?' notazione per renderlo più breve:
actions.ContainsKey(pair.Key) ? actions[pair.Key](pair.Value, pair.Key) : actions[""](pair.Value, pair.Key);
Questo codice mi mostra errore:
Error 1 Only assignment, call, increment, decrement, and new object expressions can be used as a statement
actions[pair.Key](pair.Value, pair.Key)
non è una chiamata? Mi manca qualcosa? È possibile usare '?' notazione con i dizionari di azione? Stavo cercando di trovare qualcosa a riguardo ma è difficile trovare qualcosa su '?' operatore e questo errore perché '?' viene ignorato da google.
Il tuo non assegnare a nulla, è anche davvero più breve? – Sayse
@Sayse si non lo sono, ma c'è che devo fare "assignment, call, increment, decrement ..." e sto facendo call. Preferisco questa notazione, ma il punto principale è la mia curiosità. Voglio davvero sapere, cosa c'è di sbagliato nella mia chiamata :) – wudzik
'TryGetValue' .. –