开发者

Is there something like List<String, Int32, Int32> (multidimensional generic list)

开发者 https://www.devze.com 2023-01-02 11:27 出处:网络
I need something similar to List<String, Int32, Int32>. List only supports one type at a time, and D开发者_如何学JAVAictionary only two at a time. Is there a clean way to do something like the a

I need something similar to List<String, Int32, Int32>. List only supports one type at a time, and D开发者_如何学JAVAictionary only two at a time. Is there a clean way to do something like the above (a multidimensional generic list/collection)?


Best way is to create a container for it ie a class

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

then in the code where you need it

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


In .NET 4 you can use List<Tuple<String, Int32, Int32>>.


Well, you can't do this til C# 3.0, use Tuples if you can use C# 4.0 as mentioned in other answers.

However In C# 3.0 - create an Immutable structure and wrap all types' insances within the structure and pass the structure type as generic type argument to your list.

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));

If you're curious why create immutable structs - checkout here.


Based on your comment, it sounds like you need a struct with two integers stored in a dictionary with a string key.

struct MyStruct
{
   int MyFirstInt;
   int MySecondInt;
}

...

Dictionary<string, MyStruct> dictionary = ...
0

精彩评论

暂无评论...
验证码 换一张
取 消