离开foreach循环后保存列表

时间:2017-09-19 07:30:27

标签: c# list

所以我是c#的新手,我希望在离开循环后保留我的列表....

             foreach (object itemChecked1 in clVorfahr.CheckedItems)
        {
             List<object> VorfahrCK = clVorfahr.CheckedItems.OfType<object>().ToList();

        }

        foreach (object itemChecked in clNachfolg.CheckedItems)
        {
             List<object> NachfolgCK = clNachfolg.CheckedItems.OfType<object>().ToList();
        }

离开这个foreach循环后,我的列表是空的,但是当我调试并停止每个循环时,我的列表正在获取数据但是在完全没空后

4 个答案:

答案 0 :(得分:8)

您的问题由两部分组成:

  1. 您在List<object> VorfahrCK = new List<object>(); foreach (object itemChecked1 in clVorfahr.CheckedItems) { VorfahrCK.Add(itemChecked); } 的每次迭代中创建一个完整的新列表。
  2. 您没有将该列表分配给任何内容,因此在迭代完成后您无法对列表执行任何操作。
  3. 所以你应创建

    List<object> VorfahrCK = clVorfahr.CheckedItems.OfType<object>().ToList();
    

    以下内容有点短,但也是如此:

    LIKE

答案 1 :(得分:4)

你的代码很混乱

1,范围在循环中定义了你的变量,以便它存在的位置,使它存在于循环之外的声明之前 - 执行循环然后你可以在之后使用它。

2,在每个项目的循环中,您完全相同,不将项目添加到列表中。

你只需要用线

就可以了
List<object> NachfolgCK = clNachfolg.CheckedItems.OfType<object>().ToList();

答案 2 :(得分:2)

在循环外部初始化它们,否则它们不在您需要的范围内!

 List<object> VorfahrCK = new List<object>();
 List<object> NachfolgCK = new List<object>();

    foreach (object itemChecked1 in clVorfahr.CheckedItems)
    {
         VorfahrCK = clVorfahr.CheckedItems.OfType<object>().ToList();

    }

    foreach (object itemChecked in clNachfolg.CheckedItems)
    {
         NachfolgCK = clNachfolg.CheckedItems.OfType<object>().ToList();
    }

答案 3 :(得分:0)

您在foreach括号内声明这些变量。因此,它们的范围在2个括号中。 在下面声明它们如下:

List<object> VorfahrCK = new List<object>();
foreach (object itemChecked1 in clVorfahr.CheckedItems)
    {
         VorfahrCK = clVorfahr.CheckedItems.OfType<object>().ToList();

    }

但是我不认为你使用itemChecked1,为什么要使用foreach?

无论如何,我经常使用这样的东西:

List<string> stringList = new List<string>();
foreach (var line in anotherStringList)
{
    stringList.Add(line);
}