C#には、次のようなものがありますか?<key, string, string>
私は2番目と3番目のフィールドに素早くアクセスするためにキーを使用できます。次のような単純な構造
class Foo
{
public StringOne { get; set; }
public StringTwo { get; set; }
}
次にそうのように、Dictionary<string, Foo>
を使用します。
C#には、次のようなものがありますか?<key, string, string>
私は2番目と3番目のフィールドに素早くアクセスするためにキーを使用できます。次のような単純な構造
class Foo
{
public StringOne { get; set; }
public StringTwo { get; set; }
}
次にそうのように、Dictionary<string, Foo>
を使用します。
、あなたが興味を持っている2つの文字列を保持するクラスまたは構造体を定義する必要があります:
var dict = new Dictionary<string, Foo>();
dict["key"] = new Foo() {
StringOne = "Hello",
StringTwo = "World"
};
クラスとそのプロパティに意味のある名前を付けることを忘れないでください。
.net 4.0を使用していません。 keyValuedPairというクラスが見つかりました。 – user496949
KeyValuePairはあなたが望むものではありません。キーを値にマップする辞書やその他のものでの使用を意図しています。 C#3と.NET 2.0/3.5で動作する私の更新された答えを見てください。 – cdhowie
それはちょうどペア
なぜこの
class StringPair {
public string Item1 { get; set; }
public string Item2 { get; set; }
}
Dictionary<TKey, StringPair>
この単純なタスクのための追加のクラスが好きではありません – user496949
他にもできることはあまりありません。ごめんなさい。 –
タプルは本当に良いです。残念ながらそれは4.0にしかない – user496949
を書き込まないでしょうあなたのためにこの作品?
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".
}
}
問題は何ですか。 –
辞書? –