C#中的多维arraylist或列表?

是否可以在C#中创建多维列表? 我可以像这样创建一个多维数组:

string[,] results = new string[20, 2]; 

但我希望能够使用列表或arraylist中的一些function,如能够添加和删除元素。

您可以创建列表列表

  public class MultiDimList: List> { } 

或密钥可访问列表的字典

  public class MultiDimDictList: Dictionary> { } MultiDimDictList myDicList = new MultiDimDictList (); myDicList.Add("ages", new List()); myDicList.Add("Salaries", new List()); myDicList.Add("AccountIds", new List()); 

通用版本,用于在@ user420667的评论中实现建议

  public class MultiDimList: List> { } 

而对于字典,

  public class MultiDimDictList: Dictionary> { } // to use it, in client code var myDicList = new MultiDimDictList (); myDicList.Add("ages", new List()); myDicList["ages"].Add(23); myDicList["ages"].Add(32); myDicList["ages"].Add(18); myDicList.Add("salaries", new List()); myDicList["salaries"].Add(80000); myDicList["salaries"].Add(100000); myDicList.Add("accountIds", new List()); myDicList["accountIds"].Add(321123); myDicList["accountIds"].Add(342653); 

或者,甚至更好,……

  public class MultiDimDictList: Dictionary> { public void Add(K key, T addObject) { if(!ContainsKey(key)) Add(key, new List()); if (!base[key].Contains(addObject)) base[key].Add(addObject); } } // and to use it, in client code var myDicList = new MultiDimDictList (); myDicList.Add("ages", 23); myDicList.Add("ages", 32); myDicList.Add("ages", 18); myDicList.Add("salaries", 80000); myDicList.Add("salaries", 110000); myDicList.Add("accountIds", 321123); myDicList.Add("accountIds", 342653); 

编辑:包含嵌套实例的Add()方法:

 public class NestedMultiDimDictList: MultiDimDictList>: { public void Add(K key, K2 key2, T addObject) { if(!ContainsKey(key)) Add(key, new MultiDimDictList()); if (!base[key].Contains(key2)) base[key].Add(key2, addObject); } } 

你只需要列出一个列表:

 List> results = new List>(); 

然后只需使用您想要的function

 results.Add(new List()); //adds a new list to your list of lists results[0].Add("this is a string"); //adds a string to the first list results[0][0]; //gets the first string in your first list 

不完全是。 但您可以创建列表列表:

 var ll = new List>(); for(int i = 0; i < 10; ++i) { var l = new List(); ll.Add(l); } 

根据您的具体要求,您最好使用锯齿状的arrays:

 List[] results = new { new List(), new List() }; 

或者您可以使用列表列表或其他一些此类构造。

如果你想修改它,我会选择以下任何一种方法:

 List results; 

– 要么 –

 List> results; 

根据您的需要……