将List <T>转换为object []

Gra*_*ton 17 c# arrays generics

我正在寻找一个转换List<T>成一个班轮object[].这是一个班轮,所以我对这样的解决方案不感兴趣foreach,或者for......

任何接受者?

提示:没有,都List<T>.ToArray()List<T>.ToArray<object>()不工作.

编辑:为什么List<T>.ToArray<object>()不起作用?因为它无法编译.

Ran*_*pho 61

mylist.Cast<object>().ToArray()
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这只会迭代一次,以防你想知道性能.上).:)

为什么?好吧,因为Cast<object>将使用延迟执行,并且在迭代列表之前实际上不会执行任何操作ToArray().

  • 两者都是LINQ.第二个是LINQ查询. (3认同)
  • 没有看到关于演员的通用论点,所以我发布了另一个答案.这是正确的答案.+1 (2认同)
  • @Randolpho:近7年后你的回答得到了帮助.Thums up for that :) (2认同)

Çağ*_*kin 8

List<T>.Select(x => x as object).ToArray();
Run Code Online (Sandbox Code Playgroud)

应该退货object[].

  • @迈克我不同意。是的,它们在功能上是等效的,但“Cast”是更好的选择,因为它不需要或创建 lambda。Lambda 可能很便宜,但它们不是免费的。 (2认同)