我可能会离开这里,但是当我修改它时,MS网站上的这段代码对我不起作用。对不起,差不多凌晨2点。 int应该是什么变量?程序崩溃说明“指定的演员表无效。”
ArrayList OddEven = new ArrayList();
foreach (int i in lbList.Items)
OddEven.Add(i);
foreach (int i in OddEven)
{
if (i % 2 == 0)
lbEven.Items.Add(i);
else
lbOdd.Items.Add(i);
}
答案 0 :(得分:1)
lbList.Items
可能是strings
,并且不存在对int
的隐式转换。
试试这个:
ArrayList OddEven = new ArrayList();
foreach (var i in lbList.Items)
OddEven.Add(int.Parse(i.ToString()));
foreach (int i in OddEven)
{
if (i % 2 == 0)
lbEven.Items.Add(i);
else
lbOdd.Items.Add(i);
}
答案 1 :(得分:0)
假设lbList,lbEven和lbOdd是ListBoxes,您似乎正在尝试将ListBoxItem转换为int。我很惊讶这甚至编译,因为Items集合的Add()方法采用新的ListBoxItem或字符串,而不是int。你需要发布更多信息。话虽如此,使用模运算符的基本逻辑是正确的,你只是试图将输出填充到错误的东西。您希望如何显示输出?
答案 2 :(得分:0)
我假设您的lbList是ListBox或DropdownList
foreach (ListItem item in lbList.Items)
{
int i = int32.Parse(item.Text);
if (i % 2 == 0)
lbEven.Items.Add(i);
else
lbOdd.Items.Add(i);
}
在Winforms中,ListBox.Items返回ObjectCollection
,列表中的每个项目都为Object
foreach (object item in lbList.Items)
{
int i = Convert.ToInt32(item);
if (i % 2 == 0)
lbEven.Items.Add(i);
else
lbOdd.Items.Add(i);
}
您也可以
foreach (var item in lbList.Items)
{
int i = Convert.ToInt32(item);
if (i % 2 == 0)
lbEven.Items.Add(i);
else
lbOdd.Items.Add(i);
}
答案 3 :(得分:0)
试试这个,
lbList.Items.ToList<string>().ForEach(item =>
{
int i = Convert.ToInt32(item);
if (i % 2 == 0)
lbEven.Items.Add(i);
else
lbOdd.Items.Add(i);
});