将列表转换为对象这是一个classwheel,所以我对foreach或for...任何taker之类的解决方案不感兴趣?提示:不,List.ToArray()和List.ToArray()都不起作用。编辑:为什么List.ToArray()不起作用?因为编译失败。mylist.Cast().ToArray()顺便说一句,如果您想了解性能,这只会迭代一次。优越的)。?为什么?好吧,因为Cast将使用延迟执行并且在ToArray()遍历列表之前实际上不会做任何事情。List.Select(x=>xasobject).ToArray();应该返回一个对象[]。如果您没有Linq(.Net3.0),则可以使用List中的ConvertAll()和ToArray()方法:Listlist=newList();object[]objects=list.ConvertAll(item=>(object)item).ToArray();theList.Cast().ToArray()或newList(theList).ToArray()用于预LINQ解决方案(仅适用于引用类型)。(object[])List.ToArray();如果您不介意编写一个非常短的可重用函数,ConvertAll扩展方法可能会有所帮助:http://msdn.microsoft.com/en-us/library/73fe8cwf.aspx编辑:这也可以工作ListintList=newList(){1,3,4};object[]objectList=intList.ConvertAll(item=>(object)item).ToArray();在.NET2.0在C#(VS2008)中,以下编译并且不使用LINQ(据我所知)作为引用类型。对象[]oArray;列表oList=newList();oArray=oList.ToArray();这不需要转换,因为所有引用类型都基于对象。我建议创建一个ListCastAdapter,假设你想将一个列表转换为一个列表创建一个IList实现的实现,它返回一个列表中的项目我很可能会称它为ListCastAdapter类有一个美好的一天实现(未测试):注意:建议将列表设置为只读,因为现在用户可以在原始列表的层次结构中插入对象。注意:CopyTo()没有实现,你可以为数组创建相同的想法。以上就是C#学习教程:List转对象的全部内容,分享给大家。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——usingSystem.Collections;使用System.Collections.Generic;命名空间UDF.MyDataLayer{内部类ListCastAdapter:IList其中T:类其中S:类{私有列表适配器;publicListCastAdapter(Listadaptee){this.adaptee=adaptee;}#regionIEnumerable公共类EnumeratorCastAdapter的实现:IEnumeratornumeratoradaprivate;publicEnumeratorCastAdapter(IEnumeratoradaptee){this.adaptee=adaptee;}#regionIDisposable的实现//////执行应用程序定义的与释放、释放或重置非托管资源相关的任务。//////2publicvoidDispose(){adaptee.Dispose();}#endregion#regionIEnumerator的实现//////将枚举器前进到集合的下一个元素。/////////如果枚举器成功前进到下一个元素,则为真;如果枚举数为false随着收集的结束。//////创建枚举器后修改了集合。2publicboolMoveNext(){返回adaptee.MoveNext();}//////将枚举器设置为其初始位置,即集合中第一个元素之前。//////创建枚举器后修改了集合。2publicvoidReset(){adaptee.Reset();}//////获取枚举器当前位置的集合中的元素。/////////枚举器当前位置的集合中的元素。///publicTCurrent{get{//需要检查它是对象还是值类型returnadaptee.CurrentasT;}}//////获取集合中的当前元素。/////////集合中的当前元素。//////枚举器位于集合的第一个元素之前或最后一个element.2objectIEnumerator.Current{get{returnCurrent;}}#endregion}//////返回一个遍历集合的枚举器。/////////可用于遍历集合的A。//////1publicIEnumeratorGetEnumerator(){返回新的EnumeratorCastAdapter(adaptee.GetEnumerator());}//////返回一个遍历集合的枚举器。/////////可用于遍历集合的对象。//////2IEnumeratorIEnumerable.GetEnumerator(){返回adaptee.GetEnumerator();}#endregion#regionICollection的实现//////添加一个项目到.//////添加到.The的对象是只读的。publicvoidAdd(Titem){adaptee.Add(itemasS);}//////从.//////是只读的。publicvoidClear(){adaptee.Clear();}//////确定是否包含特定值。/////////如果在;中找到则为真否则,假的。//////要在.publicboolContains(Titem){returnadaptee.Contains(itemasS);}//////将的元素复制到,从特定索引开始。//////作为从复制的元素的目的地的一维。必须具有从零开始的索引。复制开始的从零开始的索引。一片空白。小于0。是多维的。-或-源中的元素数大于从到目标末尾的可用空间。-或-类型无法自动转换为目标的类型。publicvoidCopyTo(T[]array,intarrayIndex){thrownewSystem.NotImplementedException("我不需要,如果需要实现ArrayCastAdapter");}//////从./////////如果已成功从;中删除则为true否则,假的。如果在原始.//////要从.The中删除的对象是只读的。publicboolRemove(Titem){adaptee.Remove(itemasS);}//////获取./////////中包含的元素数。///publicintCount{get{returnadaptee.Count;}}//////获取指示是否为只读的值。/////////如果是只读则为真;否则,假的。///publicboolIsReadOnly{get{returntrue;//改变,生活在边缘}}#endregion#regionIList的实现//////确定./////////在列表中找到的索引;否则,-1。//////要在.publicintIndexOf(Titem){returnadaptee.IndexOf(itemasS);}//////将项目插入到指定索引处。//////应插入的从零开始的索引。要插入到中的对象。不是中的有效索引。The是只读的。publicvoidInsert(intindex,Titem){adaptee.Insert(index,itemasS);}//////雷姆移动指定索引处的项目。//////要删除的项目的从零开始的索引。不是中的有效索引。The是只读的。publicvoidRemoveAt(intindex){adaptee.RemoveAt(index);}//////获取或设置指定索引处的元素。/////////指定索引处的元素。//////要获取或设置的元素的从零开始的索引。不是中的有效索引。属性已设置且是只读的。publicTthis[intindex]{get{returnadaptee[index]asT;}set{adaptee[index]=valueasS;}}#endregion}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
