列表列表的数组
Array of Lists of Lists
我正在尝试制作列表列表的数组,整个事情让我感到困惑。我希望数组更大,所以我做了 List<List<int>>[] arr = new List<List<int>>[5]
,但是在我添加了一些项目之后,我需要通过 arr.ElementAt(1).ElementAt(1)[1]
访问它们,但不应该反过来吗( [1]
在开头)?
我想做的只是填充整个三个维度,但是当我尝试通过 arr[1].ElementAt(1).Add(...)
或 arr.ElementAt(1)[1].Add(...)
添加最后一个维度时(不确定要使用哪个维度,两者都不起作用)我收到一条警告,说我正在尝试向空列表添加一个值
new List<List<int>>[5]
实际上是一个List of List of int的数组,但是你仍然可以在它上面调用ElementAt(),因为数组实现了IEnumerable。
您需要在使用前实例化您的 List<List<int>>
arr[0] = new List<List<int>>();
arr[0].Add(new List<int>());
arr[0][0].Add(5);
///etc...
另一个注意事项:您看到我如何在 List
上使用 []
括号了吗? 受支持。
以下显示了与所需数据结构的不同交互以添加和验证元素。
var arr = new List<List<int>>[]
{
new List<List<int>>()
{
new List<int>() { 1, 3, 5 },
new List<int>() { 2, 4, 6 },
},
new List<List<int>>() { new List<int>() },
new List<List<int>>() { new List<int>() },
new List<List<int>>() { new List<int>() },
new List<List<int>>() { new List<int>() },
};
Assert.AreEqual(4, arr[0].ElementAt(1).ElementAt(1));
Assert.AreEqual(3, arr[0].ElementAt(1).Count);
arr[0].ElementAt(1).Add(8);
Assert.AreEqual(4, arr[0].ElementAt(1).Count);
Assert.AreEqual(8, arr[0].ElementAt(1).ElementAt(3));
我正在尝试制作列表列表的数组,整个事情让我感到困惑。我希望数组更大,所以我做了 List<List<int>>[] arr = new List<List<int>>[5]
,但是在我添加了一些项目之后,我需要通过 arr.ElementAt(1).ElementAt(1)[1]
访问它们,但不应该反过来吗( [1]
在开头)?
我想做的只是填充整个三个维度,但是当我尝试通过 arr[1].ElementAt(1).Add(...)
或 arr.ElementAt(1)[1].Add(...)
添加最后一个维度时(不确定要使用哪个维度,两者都不起作用)我收到一条警告,说我正在尝试向空列表添加一个值
new List<List<int>>[5]
实际上是一个List of List of int的数组,但是你仍然可以在它上面调用ElementAt(),因为数组实现了IEnumerable。
您需要在使用前实例化您的 List<List<int>>
arr[0] = new List<List<int>>();
arr[0].Add(new List<int>());
arr[0][0].Add(5);
///etc...
另一个注意事项:您看到我如何在 List
上使用 []
括号了吗? 受支持。
以下显示了与所需数据结构的不同交互以添加和验证元素。
var arr = new List<List<int>>[]
{
new List<List<int>>()
{
new List<int>() { 1, 3, 5 },
new List<int>() { 2, 4, 6 },
},
new List<List<int>>() { new List<int>() },
new List<List<int>>() { new List<int>() },
new List<List<int>>() { new List<int>() },
new List<List<int>>() { new List<int>() },
};
Assert.AreEqual(4, arr[0].ElementAt(1).ElementAt(1));
Assert.AreEqual(3, arr[0].ElementAt(1).Count);
arr[0].ElementAt(1).Add(8);
Assert.AreEqual(4, arr[0].ElementAt(1).Count);
Assert.AreEqual(8, arr[0].ElementAt(1).ElementAt(3));