Як перетворити масив у список <object> у C #?


77

Як перетворити a Arrayна a List<object>в C #?


13
Я не розумію, що не так із цим запитанням .. -5? Справді?
Філіп Екберг

6
+1, оскільки це просте, ефективне запитання, для якого я не знайшов дубліката на SO. (Downvoters повинні коментувати або переглянути.) Stackoverflow.com/questions/1003841 / ... blog.stackoverflow.com/2009/06/podcast-58
JYelton

Відповіді:


105
List<object> list = myArray.Cast<Object>().ToList();

Якщо тип елементів масиву є посилальним типом, ви можете не враховувати, .Cast<object>()оскільки C # 4 додав інтервалу ко-дисперсії, тобто an IEnumerable<SomeClass>може розглядатися як IEnumerable<object>.

List<object> list = myArray.ToList<object>();

29
Переконайтеся, що ви використовуєте System.Linq
Нестор Ледон

Це працює лише у VS2015? У VS2012: "System.Array" не містить визначення "Cast" і не може бути знайдено жодного методу розширення "Cast", що приймає перший аргумент типу "System.Array" (вам не вистачає директиви using або посилання на збірку? )
ajeh

Дякуємо заList<object> list = myArray.ToList<object>();
samir105

39

Використовуйте конструктор: new List<object>(myArray)


2
Приємним у цьому стилі є те, що він створює та повертає список, тому ви можете додати більше методів (наприклад .Contains(userName)). Корисно для того, щоб втиснути купу логіки в однорядковий оператор if :).
Патрік

13

List<object>.AddRange(object[])повинен зробити трюк. Це дозволить уникнути всілякого марного розподілу пам'яті. Ви також можете використовувати Linq приблизно так:object[].Cast<object>().ToList()


10

Конструктор List <> може приймати все, що реалізує IEnumerable, тому ...

        object[] testArray = new object[] { "blah", "blah2" };
        List<object> testList = new List<object>(testArray);


3

Якщо елемент масиву та елемент списку однакові

List<object> list=myArray.ToList();

Мені довелося додати за допомогою System.Linq; щоб він працював; не впевнений чому.
user3752281

2

Все, що всі говорять, правильно, тому,

int[] aArray = {1,2,3};
List<int> list = aArray.OfType<int> ().ToList();

перетворить aArray у список, список. Однак найбільше, чого бракує у багатьох коментарях, це те, що вам потрібно мати ці 2, використовуючи твердження у верхній частині вашого класу

using System.Collections.Generic;
using System.Linq;

Сподіваюся, це допоможе!


1

Ви також можете ініціалізувати список масивом безпосередньо:

List<int> mylist= new List<int>(new int[]{6, 1, -5, 4, -2, -3, 9});



0

Ось моя версія:

  List<object> list = new List<object>(new object[]{ "test", 0, "hello", 1, "world" });

  foreach(var x in list)
  {
      Console.WriteLine("x: {0}", x);
  }

0

Ви можете спробувати це,

using System.Linq;
string[] arrString = { "A", "B", "C"};
List<string> listofString = arrString.OfType<string>().ToList();

Сподіваюся, цей код вам допоможе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.