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

C#中如何在ArrayList指定元素前后添加新元素?

在C#集合中给指定元素前后添加新元素的解决方案

嘿,我看你已经走在正确的路上了!你的代码思路完全没问题——通过Find定位目标元素、IndexOf获取索引、Insert插入新元素,只是可以补充一些边界处理,让代码更健壮。下面我来帮你完善这个逻辑:

核心步骤说明

  • 先获取用户输入的员工姓名作为搜索关键词
  • 在集合中查找匹配的Angajat对象
  • 重点:必须先判断是否找到目标元素,避免出现索引错误
  • 找到目标后,分别在它的前、后位置插入新元素

完善后的代码示例

case 5:
    // 获取用户输入的员工姓名
    string caut = Console.ReadLine();
    // 根据姓名查找对应的员工对象
    Angajat t = listaAngaj.Find(x => x.Nume == caut);
    
    // 处理找不到目标元素的情况
    if (t != null)
    {
        int k = listaAngaj.IndexOf(t);
        // 在目标元素的前面插入新元素(插入到索引k的位置)
        listaAngaj.Insert(k, new Angajat() { Nume = "前置新员工" }); // 这里可以根据需求初始化Angajat的属性
        // 因为前面插入了一个元素,原目标元素的索引变为k+1,所以后面插入的位置是k+2
        listaAngaj.Insert(k + 2, new Angajat() { Nume = "后置新员工" });
        Console.WriteLine($"已在姓名为{caut}的员工前后添加新元素,原索引为{k}");
    }
    else
    {
        Console.WriteLine($"未找到姓名为{caut}的员工");
    }
    break;

关键注意事项

  • 从代码看你大概率用的是List<Angajat>(泛型集合),如果是旧的ArrayList(非泛型),逻辑完全一致,只是需要注意类型转换。
  • 绝对不能忽略t == null的判断:当用户输入不存在的姓名时,IndexOf(null)会返回-1,调用Insert(-1, ...)会直接抛出异常。
  • 插入顺序会影响索引:如果先插前面的元素,原目标元素的索引会向后偏移一位,后面插入的位置要对应调整;如果先插后面的元素,原目标元素索引不变,前面插入的位置就是原索引k。

内容的提问来源于stack exchange,提问作者Nicolai Gonta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:32:47