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

System.Array到列表的转换

System.Array到列表的转换

C#
Smart猫小萌 2019-10-16 11:12:25
昨晚我梦到以下事情是不可能的。但是在同一个梦中,SO的某人告诉我否则。因此,我想知道是否有可能转换System.Array为ListArray ints = Array.CreateInstance(typeof(int), 5);ints.SetValue(10, 0);ints.SetValue(20, 1);ints.SetValue(10, 2);ints.SetValue(34, 3);ints.SetValue(113, 4);至List<int> lst = ints.OfType<int>(); // not working
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

减轻自己的痛苦...


using System.Linq;


int[] ints = new [] { 10, 20, 10, 34, 113 };


List<int> lst = ints.OfType<int>().ToList(); // this isn't going to be fast.

也可以...


List<int> lst = new List<int> { 10, 20, 10, 34, 113 };

要么...


List<int> lst = new List<int>();

lst.Add(10);

lst.Add(20);

lst.Add(10);

lst.Add(34);

lst.Add(113);

要么...


List<int> lst = new List<int>(new int[] { 10, 20, 10, 34, 113 });

要么...


var lst = new List<int>();

lst.AddRange(new int[] { 10, 20, 10, 34, 113 });


查看完整回答
反对 回复 2019-10-16
?
手掌心

TA贡献1942条经验 获得超3个赞

List的构造函数重载也可以工作...但是我想这将需要一个强类型数组。


//public List(IEnumerable<T> collection)

var intArray = new[] { 1, 2, 3, 4, 5 };

var list = new List<int>(intArray);

...用于Array类


var intArray = Array.CreateInstance(typeof(int), 5);

for (int i = 0; i < 5; i++)

    intArray.SetValue(i, i);

var list = new List<int>((int[])intArray);


查看完整回答
反对 回复 2019-10-16
?
MM们

TA贡献1886条经验 获得超2个赞

有趣的是,没人回答这个问题,OP不是使用强类型,int[]而是使用Array。


您必须将Array转换为实际的int[],然后才能使用ToList:


List<int> intList = ((int[])ints).ToList();

请注意,Enumerable.ToList调用列表构造函数将首先检查是否可以将参数强制转换为ICollection<T>(数组实现)该参数,然后它将使用更有效的ICollection<T>.CopyTo方法来代替枚举序列。


查看完整回答
反对 回复 2019-10-16
  • 3 回答
  • 0 关注
  • 421 浏览

添加回答

举报

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