列表框中的Foreach语句

Cra*_*d22 5 c# foreach listbox

我的项目中有一个foreach语句有问题.到目前为止,我有代码:

    foreach(object i in listboxFiles.Items)
    {
        if (i == ".ftpquota")
        {
            listboxFiles.Items.Remove(i);
        }
        if (i == ".")
        {
            listboxFiles.Items.Remove(i);
        }
        if (i == "..")
        {
            listboxFiles.Items.Remove(i);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在一秒计时器中有这个.它可以获得项目名称,但是当它到达if语句时它表示它们不匹配,但是它们呢?

Kon*_*lph 6

第一件事情,你正在改变一个集合,而遍历它.这不起作用,因此您的代码从根本上被打破.

有几种方法可以解决这个问题; 在你的情况下,最简单的方法是复制items集合,迭代副本并更改(=删除)原始集合:

var items = new System.Collections.ArrayList(listboxFiles.Items);

foreach (var item in items) {
    if (item.Equals("."))
        listboxFiles.Items.remove(item);
    …
}
Run Code Online (Sandbox Code Playgroud)

其次,您将a object与a 进行比较string,因此==运算符确实引用了相等性检查而不是测试字符串相等性.使用Equals或做适当的演员.