添加许多列表

时间:2012-06-07 03:21:59

标签: c#

如果我有100个列表(例如x1到x100),是否有更好的表达最后一行代码的方法?

        var x1 = new List<int>() { 75 };
        var x2 = new List<int>() { 95, 64 };
        var x3 = new List<int>() { 17, 47, 82 };
        var x4 = new List<int>() { 18, 35, 87, 10 };
        var x5 = new List<int>() { 20, 04, 82, 47, 65 };
        var x6 = new List<int>() { 19, 01, 23, 75, 03, 34 };
        var x7 = new List<int>() { 88, 02, 77, 73, 07, 63, 67 };
        //etc..
        var listOfListOfInts = new List<List<int>>() { x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 };

可能是一个Dictionary和一个for循环来引用所有的x1..100。

3 个答案:

答案 0 :(得分:3)

只要x1等未在其他地方引用,请写:

var listOfListOfInts = new List<List<int>>()
{
    new List<int>() { 75 },
    new List<int>() { 95, 64 },
    //etc.
};

事实上,你不应该需要来引用其他地方的变量,因为listOfListOfInts[0]x1一样好。

答案 1 :(得分:2)

你真的需要这些类型为List<T>吗?看起来您正在设置预初始化的数据。如果你永远不会改变任何这些“列表”的长度,你可以使用数组;语法更紧凑:

var listOfListOfInts = new[] {
    new[] { 75 },
    new[] { 95, 64 },
    new[] { 17, 47, 82 },
    new[] { 18, 35, 87, 10 },
    new[] { 20, 04, 82, 47, 65 },
    new[] { 19, 01, 23, 75, 03, 34 },
    new[] { 88, 02, 77, 73, 07, 63, 67 },
    // ...
};

答案 2 :(得分:0)

也许我过度复杂化了,但你可以做点像

public interface IClass1
{
    IList<IList<int>> ListList { get; set; }
    void AddList(List<int> nList);
}

public class Class1 : IClass1
{
    public IList<IList<int>> ListList { get; set; }

    public void AddList(List<int> nList)
    {
        ListList.Add(nList);
    }
}

然后像:

一样使用它
public class Create1
{
    public Create1()
    {
        IClass1 iClass1 = new Class1();
        iClass1.AddList(new List<int>() { 75 });
    }
}