创建动态尺寸的数组或列表

时间:2016-02-01 09:51:05

标签: c# arrays list multidimensional-array

我想创建一个包含N维的数组或列表。

如果没有针对每个可能维度的方法,有没有办法做到这一点:

id <- (map["id"], TransformOf<Int, String>(fromJSON: { Int($0!) }, toJSON: { $0.map { String($0) } }))

不喜欢这个

private ____ createArray(int dimensions, int[] lengths)
{
    // declare array with dimensions from variable dimensions
    // set length of first dimension to lengths[0]
    // set length of second dimension to lengths[1]
    // [...] 
    // return array
}

如果我必须这样做,我需要为每一种可能的方法(让我们忽略这样一个事实,即使用具有N维的数组可能没有意义)维度。

3 个答案:

答案 0 :(得分:2)

您可以创建列表列表

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

答案 1 :(得分:1)

您可以根据需要使用Enumerable.Repeat创建这样的级别:

int x = 5, y = 6, z = 7;
List<List<List<int>>> list3D = Enumerable.Repeat<List<List<int>>>(
    new List<List<int>>(
        Enumerable.Repeat<List<int>>(
            new List<int>(
                    Enumerable.Repeat<int>(0, z)
                    ), y)
        ), x
    ).ToList();
}

在上面的示例中,您将创建初始值为0且初始大小为5x6x7

的3D列表

答案 2 :(得分:0)

有可能。

使尺寸为int数组。从那里,您可以创建条件var声明。唯一的技巧是您需要明确转换为(Array)