为了账号安全,请及时绑定邮箱和手机立即绑定

c# List 不添加项目

c# List 不添加项目

C#
慕侠2389804 2021-10-09 16:12:33
解决方案:多次调用该方法,因此调用 remove 的次数多于现有项目。在我的程序中,我需要从列表中删除项目。但是一旦我使用 RemoveAt() 命令,我就会得到一个 ArgumentOutOfRangeException,它告诉我我的所有列表的计数都是 0,或者换句话说,都是空的。但是尽管它说它们是空的,但对象已创建并且所有方法和事件都运行良好。这是我的代码的一些部分:我的清单:        measure = new List<Messen>(maxAblaufe);        steuern = new List<Steuern>(maxAblaufe);        model = new List<Model>(maxAblaufe);        measureReflector = new List<EventReflector>(maxAblaufe);        steuernReflector = new List<EventReflector>(maxAblaufe);创建列表:    if (nextSet < maxAblaufe)        {            neuerAblauf na = new neuerAblauf();            na.Show();            //if (model.Count == nextSet)                model.Add(new Model());            na.Model = model.ElementAt(nextSet);            model.ElementAt(nextSet).Index = nextSet;            na.eventStartAblauf += this.startAblauf;        }和:public void startAblauf(object sender, EventArgs e) {        EventReflector ers = new EventReflector();        EventReflector erm = new EventReflector();        steuernReflector.Add(ers);        measureReflector.Add(erm);        if (nextSet > 0)        {            measure.ElementAt(nextSet-1).eventNextMeasure += measureReflector.ElementAt(nextSet).reflectEvent;            steuern.ElementAt(nextSet-1).eventNextSteuern += steuernReflector.ElementAt(nextSet).reflectEvent;        }        else if (nextSet == 0) {            timingMessen.eventRefreshData += measureReflector.ElementAt(nextSet).reflectEvent;            timingSteuerung.eventRefreshSteuerung += steuernReflector.ElementAt(nextSet).reflectEvent;        }        model.ElementAt(nextSet).MesstabellePath = "C:\\Users\\myuser\\Documents\\Privat\\MessTest\\Messung" + nextSet + ".csv";        Messen mess = new Messen(model.ElementAt(nextSet), myPLC, 60 + nextSet * 20, measureReflector.ElementAt(nextSet));        measure.Add(mess);        Steuern str = new Steuern(model.ElementAt(nextSet), steuertakt, myPLC, 60 + nextSet * 20, mess, steuernReflector.ElementAt(nextSet));        steuern.Add(str);    }
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

我认为问题在于您将索引存储在Index属性中。假设你有集合中三个项目,并首先你删除与指数0一这将缩短List和项目用Index的2属性将移动到索引1。然而,这意味着如果你现在运行remove方法,该项目将不再位于位置 2 并且尝试访问它会抛出ArgumentOutOfRangeException


查看完整回答
反对 回复 2021-10-09
  • 1 回答
  • 0 关注
  • 257 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信