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 = ...
精彩评论