You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在存储Numbers类对象的列表中查找Integer类对象并执行操作的问题

问题根因

你编写的代码存在两个核心问题:

  • 无论第一个元素的判断结果如何,两个分支都执行了break直接终止循环,因此只会检查列表第一个元素,不会遍历后续内容
  • foreach遍历集合过程中直接调用Remove修改集合,会触发InvalidOperationException运行时异常,就算第一个元素是Integer也无法正常完成删除操作
可行实现方案

方案1:使用LINQ实现(代码最简洁)

如果需要移除所有Integer类型元素:

// 先判断列表中是否存在Integer类型
if (!nList.Any(n => n.Type == "Integer"))
{
    Console.WriteLine("There are no integers in the list.");
}
else
{
    nList.RemoveAll(n => n.Type == "Integer");
}

如果仅需要移除第一个找到的Integer类型元素:

var firstInteger = nList.FirstOrDefault(n => n.Type == "Integer");
if (firstInteger == null)
{
    Console.WriteLine("There are no integers in the list.");
}
else
{
    nList.Remove(firstInteger);
}

方案2:使用普通for循环实现(无需引入LINQ)

bool foundInteger = false;
// 倒序遍历避免删除元素后出现索引错位问题
for (int i = nList.Count - 1; i >= 0; i--)
{
    if (nList[i].Type == "Integer")
    {
        nList.RemoveAt(i);
        foundInteger = true;
        // 如果只删除第一个Integer,保留下面的break;要删除所有则删除break即可
        break;
    }
}
if (!foundInteger)
{
    Console.WriteLine("There are no integers in the list.");
}

内容的提问来源于stack exchange,提问作者Kelven Lim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:45:00