简单的构造如下

时间:2010-11-19 02:07:44

标签: c# .net

C#中是否有类似以下<key, string, string>的内容,我可以使用密钥快速访问第二和第三个字段。

3 个答案:

答案 0 :(得分:6)

由于您已表明您未使用.NET 4,因此您必须定义一个类或结构来保存您感兴趣的两个字符串:

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

然后使用Dictionary<string, Foo>,如下所示:

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

不要忘记给这个类及其属性一些有意义的名字。

答案 1 :(得分:3)

为什么不写这个

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

Dictionary<TKey, StringPair>

答案 2 :(得分: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".
    }
}