你需要了解的第一件事是,一個List<T>
和T[]
是不等價的*(*見注)。你的代碼似乎想要將一個列表當作一個數組來處理,而這不會起作用。
一個List<List<Button>>
可在下列方式使用:
var listOfLists = new List<List<Button>>();
var listOfButtons = new List<Button>();
listOfButtons.Add(new Button());
listOfLists.Add(listOfButtons);
,您可以繼續給按鈕添加到按鈕列表,創建更多的按鈕列表,添加按鈕的,和所有的人都加入到列表列表,你可以在循環或嵌套循環中完成所有這些。
數組Button[][]
的處理方式不同。它不是動態大小的,並且會以不同的方式使用。
var arrayOfArrays = new Button[10][];
var arrayOfButtons = new Button[3];
arrayOfButtons[0] = new Button();
arrayOfButtons[1] = new Button();
arrayOfButtons[2] = new Button();
arrayOfArrays[0] = arrayOfButtons;
然後你仍然有9個更多的按鈕數組(在這個例子中)。
您的代碼嘗試將一組按鈕添加到期望按鈕列表的列表中。還有其他一些項目需要排序,但基本思想是您將這兩個不同的集合混合在一起,編譯器大聲抱怨。
要解決您的代碼,首先要爲您需要做的事情采用適當的類型,然後在您的邏輯中始終如一地正確使用這些類型。
作爲首發,看看你用這些片段得到了多少。
// using List<List<Button>>
var buttonLists = new List<List<Button>>();
for (int r = 0; r < row; r++)
{
var buttonRow = new List<Button>();
buttonLists.Add(buttonRow);
for (int c = 0; c < col; c++)
{
buttonRow.Add(new Button());
}
}
// using Button[][]
var buttonArrays = new Button[row][];
for (int r = 0; r < row; r++)
{
buttonArrays[r] = new Button[col];
for (int c = 0; c < col; c++)
{
buttonArrays[r][c] = new Button();
}
}
*除非你是通過一個共同的接口類型引用它們,在這種情況下,他們仍然是不等價的,但兼容,但超出這個答案的範圍,而不是特別有用在這種情況下,給定代碼片段。
對你想要做什麼和問題是什麼相當困惑。也許把buttonss變量改爲別的? buttonList? – RyPope 2013-03-28 00:56:50
@RyPope將其更改爲 – Tacit 2013-03-28 00:57:59