如何在C#中创建一个List<int>数组?

7

我有一个问题,需要一个ArrayList的数组。

例如,如果我们取一个int类型的ArrayList数组,它会像这样:

int[]<List> myData = new int[2]<List>;

myData[0] = new List<int>();
myData[0].Add(1);
myData[0].Add(2);
myData[0].Add(3);


myData[1] = new List<int>();
myData[1].Add(4);
myData[1].Add(5);
myData[1].Add(6);

myData[0].Add(7);

如何在C#中实现类似上述的数据结构?

在C语言中,它就像是一个链表数组。那么我该如何在C#中做到同样的效果呢?


3
示例不是一个 ArrayList 数组。 - Oded
int[]<List>在语法上没有意义。也许你想要的是List<int>[] - R. Martinho Fernandes
针对您下一个关于C#的问题,我建议您标记为C#,否则其他人可能无法找到它。 - Sören
我知道这种语法在C#中不被支持,因此提出了问题 - 如何用另一种方式实现。感谢推荐C#标签。我一定会记住的。 - sandyiit
5个回答

15
var myData = new List<int>[]
{
    new List<int> { 1, 2, 3 },
    new List<int> { 4, 5, 6 }
};

谢谢 Qrystal,这就是我需要的解决方案。 - sandyiit
1
你不需要 "List<int>" --var myData = new[] { new List { 1, 2, 3 }, new List { 4, 5, 6 } }; - onuralp

10

你已经很接近正确了,只有第一行是错误的:

List<int>[] myData = new List<int>[2];
myData[0] = new List<int>();
myData[0].Add(1);
myData[0].Add(2);
myData[0].Add(3);


myData[1] = new List<int>();
myData[1].Add(4);
myData[1].Add(5);
myData[1].Add(6);

myData[0].Add(7);

感谢madmik3,这里有一个链接,您可以了解一些关于C#中泛型列表的信息:点击这里

此外,如果您想阅读有关数组的内容,例如Array类的静态复制方法,这里有一些相关链接。


1
这个答案是正确的,但提问者也应该花点时间了解关于C#中的集合和范型。你会一直使用它们,所以学习它们会有很大帮助。你可以从像这里一样的列表开始:http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx - madmik3

4
var arraySize = 2;
var myArray = new List<Int32>[arraySize];


myArray[0] = new List<Int32>();
myArray[1] = new List<Int32>();
// And so on....

myArray[0].Add(5);

谢谢Chris,这就是我需要的解决方案。 - sandyiit

3

我更喜欢使用列表,但这取决于你...

List<List<int>> lst = new List<List<int>>();

lst.Add(new List<int>());
lst.Add(new List<int>());

lst[0].Add(1);
lst[1].Add(1);
lst[1].Add(2);
lst[0].Add(5);

如果您真的想在最后得到一个列表,可以使用一些LINQ。

lst.ToArray();

C# 是大小写敏感的,而 List<T> 方法(就像 BCL 中的所有内容一样)是帕斯卡命名法。 - R. Martinho Fernandes
抱歉,复制粘贴错误。谢谢你的修复。 - Hawxby

1

您正在尝试将具体类型List<int>并将其制作成数组。
就像string变成new string[2]一样,List<int>也变成了new List<int>[2]

这将创建一个可以容纳两个List<int>的数组。
但是,数组中的每个元素都开始为null
在使用之前,您需要将new List<int>()放入数组的每个插槽中。


然而,你应该使用 List<List<int>> 而不是一个列表数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接