将项目添加到IEnumerable的最佳方法是什么?以下是我向IEnumerable对象添加项目的方法://SomeIEnumerableobjectIEnumerablearr=newstring[]{"ABC","DEF","GHI"};//添加一项arr=arr.Concat(newstring[]{"JKL"});这很尴尬。我没有看到像ConcatSingle()这样的方法。是否有更简洁的方法将单个项目添加到IEnumerable对象?不,它就像您使用内置语言/框架功能一样整洁。如果需要,您始终可以创建扩展方法:arr=arr.Append("JKL");//或者arr=arr.Append("123","456");//或者arr=arr.Append("MNO","PQR","STU","VWY","etc","...");//...publicstaticclassEnumerableExtensions{publicstaticIEnumerableAppend(thisIEnumerablesource,paramsT[]tail){returnsource.Concat(tail);}}}IEnumerable是一个不可变的集合,这意味着您不能添加或删除项目。相反,您必须为此创建一个新集合,只需转换为您要添加的列表:varnewCollection=arr.ToList();newCollection.Add("JKL");//你的新集合是否添加了项目,写了一个扩展方法ConcatSingle?publicstaticIEnumerableConcatSingle(thisIEnumerablesource,Titem){returnsource.Concat(new[]{item});但是你需要更加小心你的术语。您不能将项目添加到IEnumerable。Concat创建一个新实例。示例:varitems=Enumerable.Range(1,10)Console.WriteLine(items.Count());//10varoriginal=items;items=items.ConcatSingle(11);Console.WriteLine(original.Count());//10Console.WriteLine(items.Count());//11如您所见,原始枚举-我们保存在original中的枚举没有改变。由于IEnumerable是只读的,因此您需要转换为列表。varnew_one=arr.ToList().Add("JKL");或者你可以获得类似的扩展方法;publicstaticIEnumerableAppend(thisIEnumerablesource,paramsT[]item){returnsource.Concat(item);您正在为IEnumerable分配一个数组。为什么不使用Array类型而不是IEnumerable?否则,如果要更改集合,可以使用IList(或List)。当我需要读取时,我只需要IEnumerable作为方法参数,而当我需要更改其中的项目时,我需要IList(或列表)。C#学习教程就是这些:将项目添加到IEnumerable的最佳方式是什么?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
