c#修改List中的结构简答题:如何修改List中的单个项目?(或者更确切地说,存储在列表中的结构成员?)完整说明:首先,使用以下结构定义:publicstructitemInfo{...(Strings,Chars,boring)...publicStringnameStr;...(你明白了,没什么特别的)...publicStringsubNum;//顺便说一句,这是我要排序的元素}publicstructslotInfo{publicCharcatID;公共字符串排序名称;公共位图mainIcon;公共IList子项;}publicstructcatInfo{publicCharcatID;公共字符串catDesc;公共IList项目;publicintnumItems;}catInfo[]gAllCats=newcatInfo[31];gAllCats在加载时填充,程序运行时依此类推。当我想对subItems数组中的itemInfo对象进行排序时,就会出现问题。我正在使用LINQ来执行此操作(因为似乎没有任何其他合理的方法来对非内置类型的列表进行排序)。所以这就是我所拥有的:IListsortedSubTemp=newListx.subNum).ToList();}使用结构,这需要更改为:for(inti=0;ix.subNum).ToList();gAllCats[c].items[i]=newitem;}其他答案有更好的信息为什么结构不同于类,但我想我可以帮助排序部分。如果子项更改为具体列表而不是IList接口,那么您将能够使用排序方法.公共列表子项;所以你的整个循环变成了:foreach(slotInfosInfingAllCats[c].items)sInf.subItems.Sort();这根本不需要修改结构的内容(通常是一件好事)。该结构的成员仍将指向完全相同的对象。此外,在C#中使用struct的理由很少。GC非常非常好,除非您在探查器中证明存在内存分配瓶颈,否则您最好使用class。更简洁一点,如果gAllCats[c].items中的item也是一个List,可以这样写:gAllCats[c].items.ForEach(i=>i.subItems.Sort());编辑:你太容易放弃了!?排序很容易定制。例如:varsimpsons=new[]{new{Name="Homer",Age=37},new{Name="Bart",Age=10},new{Name="Marge",Age=36},new{Name="爷爷",Age=int.MaxValue},new{Name="Lisa",Age=8}}.ToList();simpsons.Sort((a,b)=>a.Age-b.Age);从最小的到最古老的。(C#3中的类型推断不是很好吗?)以上就是C#学习教程:c#修改List中的结构的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: