是否有像List <string,int32,=“”int32 =“”>(多维通用列表)</string,>

时间:2010-06-08 04:48:10

标签: c# list collections generic-list

我需要与List<String, Int32, Int32>类似的东西。 List一次只支持一种类型,而Dictionary一次只支持两种类型。是否有一种干净的方式来执行上述(多维通用列表/集合)?

4 个答案:

答案 0 :(得分:14)

最好的方法是为它创建一个容器,即一个类

public class Container
{
    public int int1 { get; set; }
    public int int2 { get; set; }
    public string string1 { get; set; }
}

然后在你需要它的代码中

List<Container> myContainer = new List<Container>();

答案 1 :(得分:13)

在.NET 4中,您可以使用List<Tuple<String, Int32, Int32>>

答案 2 :(得分:1)

好吧,你不能这样做直到C#3.0,如果你可以使用其他答案中提到的C#4.0,请使用元组。

但是在C#3.0中 - 在结构中创建一个Immutable structure并包装所有类型的insances,并将结构类型作为泛型类型参数传递给列表。

public struct Container
{
    public string String1 { get; private set; }
    public int Int1 { get; private set; }
    public int Int2 { get; private set; }

    public Container(string string1, int int1, int int2)
        : this()
    {
        this.String1 = string1;
        this.Int1 = int1;
        this.Int2 = int2;
    }
}

//Client code
IList<Container> myList = new List<Container>();
myList.Add(new Container("hello world", 10, 12));

如果你很好奇为什么要创建不可变结构 - checkout here

答案 3 :(得分:0)

根据你的评论,听起来你需要一个带有两个整数的结构,这个结构存储在带有字符串键的字典中。

struct MyStruct
{
   int MyFirstInt;
   int MySecondInt;
}

...

Dictionary<string, MyStruct> dictionary = ...