2010-11-19 11 views
1

Gibt es irgendetwas in der C#, die wie die folgenden <key, string, string>, die ich Schlüssel verwenden kann, um das zweite und dritte Feld schnell zugreifen.einfaches Konstrukt wie die folgenden

+0

Was ist die Frage? –

+0

Wörterbuch ? –

Antwort

6

Da Sie angegeben haben, dass Sie nicht .NET 4 verwenden, werden Sie die beiden Strings eine Klasse oder Struktur zu halten definieren müssen Sie interessiert sind:

class Foo 
{ 
    public StringOne { get; set; } 
    public StringTwo { get; set; } 
} 

Dann ein Dictionary<string, Foo>, wie so verwenden :

var dict = new Dictionary<string, Foo>(); 
dict["key"] = new Foo() { 
    StringOne = "Hello", 
    StringTwo = "World" 
}; 

Vergessen Sie nicht, der Klasse und ihren Eigenschaften aussagekräftige Namen zu geben.

+0

nicht verwenden .net 4.0. Ich habe eine Klasse namens keyValuedPair gefunden. – user496949

+2

KeyValuePair ist nicht was du willst; Es ist für den Gebrauch in Wörterbüchern und anderen Dingen gedacht, die Schlüssel zu Werten zuordnen. Bitte beachten Sie meine aktualisierte Antwort, die mit C# 3 und .NET 2.0/3.5 funktioniert. – cdhowie

+0

sieht aus wie es ist nur Paar , kein Unterschied? – user496949

3

Warum diese nicht schreiben

class StringPair { 
    public string Item1 { get; set; } 
    public string Item2 { get; set; } 
} 

Dictionary<TKey, StringPair> 
+0

mag keine zusätzliche Klasse für diese einfache Aufgabe – user496949

+0

Es gibt nicht viel mehr, was Sie tun können. Es tut uns leid. –

+0

Tuple ist wirklich besser. Leider ist es in 4.0 nur – user496949

1

Wäre das für Sie arbeiten?

class Table<TKey, TValues> 
{ 
    Dictionary<TKey, int> lookup; 
    List<TValues[]> array; 

    public Table() 
    { 
     this.lookup = new Dictionary<TKey, int>(); 
     this.array = new List<TValues[]>(); 
    } 
    public void Add(TKey key, params TValues[] values) 
    { 
     array.Add(values); 
     lookup.Add(key, array.Count - 1); 
    } 

    public TValues[] this[TKey key] 
    { 
     get { return array[lookup[key]]; } 
     set { array[lookup[key]] = value; } 
    } 
} 

class Program 
{ 

    static void Main(string[] args) 
    { 
     Table<int, string> table = new Table<int, string>(); 
     table.Add(10001, "Joe", "Curly", "Mo"); 
     table.Add(10002, "Alpha", "Beta"); 
     table.Add(10101, "UX-300", "UX-201", "HX-100b", "UT-910"); 

     string[] parts = table[10101]; 
     // returns "UX-300", "UX-201", "HX-100b" and "UT-910". 
    } 
}