2011-08-17 10 views
15

Non so se sto facendo una "giornata pesante" - ma mi sono chiesto quale sia il percorso migliore qui.Qual è il modo migliore per memorizzare coppie di stringhe, creare un oggetto o utilizzare una classe in .NET?

Contesto:

Ho una lista di campi e voglio memorizzare nomi alias con loro (sto usando .NET 2.0 BTW) esempio

enter image description here

Quindi è essenzialmente una coppia di stringhe:

RIFERIMENTO, Rif

comunità, Community

POST_CODE, CAP

... e sto pensando che sembra sempre fuori bordo per continuare a creare oggetti per cose come questa, quindi dovrei creare un oggetto StringDictionary e memorizzare i valori in questo modo, anche se non utilizzerei nessuna delle funzionalità della classe StringDictionary e non mi preoccupo di un valore chiave associazione di coppie ecc. - Voglio solo mantenere un paio di stringhe essenzialmente.

Qualsiasi aiuto/suggerimento sarebbe fantastico.

risposta

6

È possibile utilizzare il generico Dictionary<string, string> se i "nomi di campo" sono univoci.

In caso contrario, è possibile utilizzare la classe Lookup se non vi dispiace chiavi duplicate.

Non mi preoccuperei troppo se si utilizza la piena funzionalità di tali classi oppure no. Penso che la preoccupazione più importante dovrebbe essere scrivere codice semplice, facile da leggere &.

5

Che dire di Tuple<string,string>? È integrato in .net 4.0 ed è leggero.

+0

Si prega di essere a conoscenza con le chiavi duplicate, se si vuole evitare. – Jayee

31

La classe generica "pair" per .NET è Tuple. Si dovrebbe utilizzare come:

var strings=new List<Tuple<string, string>>(); 
strings.Add(Tuple.Create("REFERENCE", "Ref")); 

Un dizionario è un sostituto perfettamente accettabile se il più a sinistra della stringa è unico (cioè una chiave). Avrai errori altrimenti.

Se è preferibile utilizzare le raccolte predefinite o creare un oggetto reale, dipende dalle proprie esigenze (si aggiungeranno più colonne in un secondo momento? Non è possibile farlo con un approccio al dizionario), quanto spesso lo si utilizza (se si tratta di un tipo di nucleo, probabilmente si dovrebbe fare un modello del dominio a esso) ecc

Edit: da non utilizzare qualsiasi dizionario integrato nella funzionalità, che non è vero: si sta utilizzando il suo algoritmo di ricerca binaria e struttura ad albero interna per ricerche fulminee. Un elenco di Tuple o del tuo tipo molto probabilmente non avrà questo e tornerà a una ricerca lineare.

3

A mio parere, è meglio utilizzare una struttura personalizzata per la memorizzazione due stringhe, perché: System.Collections.Generic.Dictionary e System.Collections.Specialized.NameValueCollection richiedono il metodo Add aggiungere stringhe in loro - è linee aggiuntive di codice. La classe System.Tuple ha solo proprietà ReadOnly - questo può essere un ostacolo.

Esempio di struttura semplice:

public struct DoppelWert 
{ 
public string Wert1; 
public string Wert2; 
} 
+1

Buona soluzione e adoro i nomi dei campi – CindyH

Problemi correlati