【问题标题】:Populating a nested List填充嵌套列表
【发布时间】:2013-03-16 11:58:39
【问题描述】:

我想在这个列表中添加我的按钮

List<List<Button>> buttonss = new List<List<Button>>();

这就是我创建按钮的方式:

Button[][] buttons;

在方法中(也尝试填充列表但不正确):

for (int r = 0; r < row; r++)
    {
       for ( int c = 0; c < col; c++)
           {
             buttons[r][c] = new Button();
             buttonss.Add(buttons[r][c]);
           }
    }

如何使用此按钮数组填充此列表(我的数组必须是 Button[][] 而不是 Button[,],因为当我执行 xml 序列化等其他操作时,它会让我的生活更轻松

【问题讨论】:

  • 我希望你先做到buttons = new Button[][row]; 和buttons[r] = new Button[col];
  • @Nolonar 我喜欢你的评论让我觉得世界的命运取决于他正确的实例化。主要是因为它确实如此。 :S
  • @Nolonar 是的,我还没有粘贴整个代码

标签: c# winforms visual-studio-2010 multidimensional-array


【解决方案1】:

你可以使用 LINQ Select:

buttonss = buttons.Select(b => b.ToList()).ToList();

【讨论】:

    【解决方案2】:

    我不确定您为什么要尝试以两种不同的方式存储这两种方式,但如果您真的需要,那么您需要初始化每个内部数组和列表:

    buttons = new Button[row][];
    for (int r = 0; r < row; r++)
    { 
       buttons[r] = new Button[col];
       List<Button> rowList = new List<Button>();
       buttonss.Add(rowList);    
       for (int c = 0; c < col; c++)
       {
         buttons[r][c] = new Button();
         rowList.Add(buttons[r][c]);
       }
    }
    

    另一种方法是将存储在一个锯齿状数组中,然后转换到一个列表(反之亦然):

    // From List<List> to Jagged Array
    buttons = buttonss.Select(b=>b.ToArray()).ToArray();
    
    // From Jagged Array to List<List>
    buttonss = buttons.Select(b=>b.ToList()).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 2019-01-01
      • 2020-12-10
      • 1970-01-01
      相关资源
      最近更新 更多