Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 填充嵌套列表_C#_Winforms_Visual Studio 2010_Arraylist - Fatal编程技术网

C# 填充嵌套列表

C# 填充嵌套列表,c#,winforms,visual-studio-2010,arraylist,C#,Winforms,Visual Studio 2010,Arraylist,我有一个生成按钮网格的程序,我想将这些按钮存储在一个嵌套的数组列表中,但我的方式似乎不正确 这是我的代码: List<List<Button>> buttonsList = new List<List<Button>>(); List<Button[]> rowList = new List<Button[]>(); //Some method that creates a

我有一个生成按钮网格的程序,我想将这些按钮存储在一个嵌套的数组列表中,但我的方式似乎不正确

这是我的代码:

        List<List<Button>> buttonsList = new List<List<Button>>();
        List<Button[]> rowList = new List<Button[]>();

        //Some method that creates a grid of buttons
        buttons = new Button[row][];
        for (int r = 0; r < row; r++)
        { 
            buttons[r] = new Button[col];
            buttonsList.Add(rowList[r]);    
            for (int c = 0; c < col; c++)
            {
                buttons[r][c] = new Button();
                rowList[c].Add(buttons[r][c]);
            }
        }
List按钮列表=新建列表();
List rowList=新列表();
//创建按钮网格的某些方法
按钮=新按钮[行][];
对于(int r=0;r
您需要了解的第一件事是
列表和
T[]
不是等价的*(*参见脚注)。您的代码似乎希望将列表视为数组,但这样做行不通

列表可以以下列方式使用:

var listOfLists = new List<List<Button>>();
var listOfButtons = new List<Button>();
listOfButtons.Add(new Button());
listOfLists.Add(listOfButtons); 
然后,您仍然可以设置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();
    }
}
//使用列表
var buttonList=新列表();
对于(int r=0;r


*除非您通过通用接口类型引用它们,否则在这种情况下,它们仍然不是等价的,而是兼容的,但鉴于所涉及的代码片段,这超出了本答案的范围,并且在本上下文中不是特别有用。

您需要了解的第一件事是
列表和
t[]
不等同*(*见脚注)。您的代码似乎希望将列表视为数组,但这样做行不通

列表可以以下列方式使用:

var listOfLists = new List<List<Button>>();
var listOfButtons = new List<Button>();
listOfButtons.Add(new Button());
listOfLists.Add(listOfButtons); 
然后,您仍然可以设置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();
    }
}
//使用列表
var buttonList=新列表();
对于(int r=0;r


*除非您通过通用接口类型引用它们,否则在这种情况下,它们仍然不是等价的,而是兼容的,但鉴于所涉及的代码片段,这超出了本答案的范围,在这种情况下也不是特别有用。

对于您试图做什么以及问题是什么,您感到相当困惑。也许将buttonss变量更改为其他变量?按钮列表?对你想做什么和问题是什么相当困惑。也许将buttonss变量更改为其他变量?按钮列表?请参阅包含可能有助于您入门的代码片段的更新。请参阅包含可能有助于您入门的代码片段的更新。