2010-11-19 23 views
1

C#には、次のようなものがありますか?<key, string, string>私は2番目と3番目のフィールドに素早くアクセスするためにキーを使用できます。次のような単純な構造

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

次にそうのように、Dictionary<string, Foo>を使用します。

あなたは.NET 4を使用していないことを記載しておりますので
+0

問題は何ですか。 –

+0

辞書? –

答えて

6

、あなたが興味を持っている2つの文字列を保持するクラスまたは構造体を定義する必要があります:

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

クラスとそのプロパティに意味のある名前を付けることを忘れないでください。

+0

.net 4.0を使用していません。 keyValuedPairというクラスが見つかりました。 – user496949

+2

KeyValuePairはあなたが望むものではありません。キーを値にマップする辞書やその他のものでの使用を意図しています。 C#3と.NET 2.0/3.5で動作する私の更新された答えを見てください。 – cdhowie

+0

それはちょうどペアのように見えますが、違いはありますか? – user496949

3

なぜこの

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

Dictionary<TKey, StringPair> 
+0

この単純なタスクのための追加のクラスが好きではありません – user496949

+0

他にもできることはあまりありません。ごめんなさい。 –

+0

タプルは本当に良いです。残念ながらそれは4.0にしかない – user496949

1

を書き込まないでしょうあなたのためにこの作品?

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". 
    } 
} 
関連する問題