当前位置: 首页 > 编程语言 > C#

listgetnextelementorgetfirstelement分享

时间:2023-04-10 19:00:35 C#

listgetnextelementorgetfirstelement我想获取列表中的下一个元素,如果列表结束,我想要第一个元素。所以我只想换句话说使用它。代理列表=taskdal.GetOfficeAgents(Branches.aarhusBranch);如果(lastAgentIDAarhus!=-1){intindex=agents.IndexOf(lastAgentIDAarhus);如果(agents.Count>index+1){lastAgentIDAarhus=agents[index+1];}else{lastAgentIDAarhus=agents[0];}}else{lastAgentIDAarhus=agents[0];我对上面显示的我自己的解决方案非常不满意,如果您有更好的解决方案请告诉我:)lastAgentIDAarhus=agents[index==-1?0:索引%agents.Count];使用MOD运算符%自动将索引切断到可能的索引范围。模运算符与DIV(/)运算符互补,返回两个整数相除的余数。例如,如果将9除以6,则结果为1,余数为3。MOD运算符需要3。或者简单地说:publicstaticTNextOf(thisIListlist,Titem){varindexOf=list.IndexOf(item);返回列表[indexOf==list.Count-1?0:索引+1];}示例:列表名称=newList();names.Add("乔恩");名字.Add("玛丽");字符串名称=String.Empty;名称=名称.NextOf(null);//名字==乔恩名字=名字。NextOf("乔恩");//名字==玛丽名字=名字.NextOf("玛丽");//name==jonh这略有不同,这是一个扩展方法,您可以使用它来制作任何IEnumerable'Circular'if(!enumerator.MoveNext())yieldbreak;while(true){yieldreturnenumerator.Current;if(!enumerator.MoveNext())enumerator=enumerable.GetEnumerator();所以你可以像这样使用它varagents=newList{1,2,3,4,123,234,345,546};foreach(variinagents.AsCircularEnumerable()){Console.WriteLine(i);}哪个会继续...?我喜欢Vinicius使用扩展方法的想法。不幸的是,他发布的代码抛出异常。这是基于他的,但它不会抛出异常,而且非常简单易读(恕我直言):publicstaticTNext(thisIListlist,Titem){varnextIndex=list.IndexOf(item)+1;如果(nextIndex==list.Count){返回列表[0];}返回列表[下一个索引];如果传入的项目不在列表中,它将返回列表中的第一项,因为在这种情况下list.IndexOf(item)将返回-1;差别不大,但至少有一些代码(至少在编辑器中);o)列出代理=taskdal.GetOfficeAgents(Branches.aarhusBranch);如果(lastAgentIDAarhus!=-1){intindex=agents.IndexOf(lastAgentIDAarhus);lastAgentIDAarhus=(agents.Count>index+1?agents[index+1]:agents[0]);}else{lastAgentIDAarhus=agents[0];如果我们添加一些检查来避免常见的错误,你怎么看?publicstaticclassListExtensions{publicstaticTTypeNext(thisIListlist,TTypeitem){if(list==null)returndefault(TType);varitemIndex=list.IndexOf(item);if(itemIndex=list.Count?list.FirstOrDefault():list[nextIndex];}}stringline=lines[lines.FindIndex(x=>x.Contains(item))+1];以上是C#的学习tutorial:list获取下一个元素或者获取第一个这个元素分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多分享注意——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:

最新推荐
猜你喜欢