2009-05-08 16 views
47

Il C# consente di compilare gli hashtable nelle espressioni a una riga? Sto pensando a qualcosa di equivalente al Python di seguito:Modo più conciso per inizializzare un hash C#

mydict = {"a": 23, "b": 45, "c": 67, "d": 89} 

In altre parole, c'è un'alternativa all'impostazione ciascuna coppia chiave-valore in un'espressione separata?

risposta

73

C# 3 ha un'estensione di lingua denominata inizializzatori di raccolta che consentono di inizializzare i valori di una raccolta in un'unica istruzione.

Ecco un esempio utilizzando un Dictionary<,>:

using System; 
using System.Collections.Generic; 

class Program 
{ 
    static void Main() 
    { 
     var dict = new Dictionary<string, int> 
     { 
      {"a", 23}, {"b", 45}, {"c", 67}, {"d", 89} 
     }; 
    } 
} 

Questa estensione lingua è supportata dal compilatore C# 3 e qualsiasi tipo che implementa IEnumerable e ha un metodo pubblico Add.

Se siete interessati vi suggerisco di leggere this question I asked here on StackOverflow da perché il team di C# implementato questa estensione lingua in un modo così curioso (una volta letto le eccellenti risposte alla domanda vedrete che fa un sacco di senso).

+1

Esiste una sintassi simile per la definizione di dizionari con profondità multiple? Ad esempio, 'Dictionary >'? –

+0

Ho trovato la tecnica e la aggiungerò come una modifica alla tua risposta, anche se è un po 'prolisso, non sono sicuro se sta risparmiando a chiunque molto tempo. –

Problemi correlati