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
相关产品推荐
相关产品推荐

