所以我是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循环后,我的列表是空的,但是当我调试并停止每个循环时,我的列表正在获取数据但是在完全没空后
答案 0 :(得分:8)
您的问题由两部分组成:
List<object> VorfahrCK = new List<object>();
foreach (object itemChecked1 in clVorfahr.CheckedItems)
{
VorfahrCK.Add(itemChecked);
}
的每次迭代中创建一个完整的新列表。所以你应创建
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);
}