2012-06-07 90 views
0

如果我有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。

+0

爲什麼不將其添加爲你正在創建列表... – TGH

回答

3

只要x1等其他地方沒有引用,然後寫:

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

其實你不應該需要到其他地方引用單個變量,因爲listOfListOfInts[0]是一樣好x1例。

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

那麼現在應該是'arrayOfArrayOfInts' :) –

+1

更改爲數組是一個相當的假設。使語法更緊湊有其他副作用,這可能是OP所不希望的。 – Yuck

+0

@Yuck,這就是爲什麼我專門調出了這個答案會(而且不會)適用的情況:「如果你永遠不會改變任何這些'列表'的長度......」。這看起來像輸入數據已初始化,然後只能讀取,所以我覺得答案可能會有所幫助。 –

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 }); 
    } 
}