List<object> list = myArray.Cast<Object>().ToList();
Wenn der Typ der Array-Elemente ein Referenztyp ist, können Sie die .Cast<object>()seit C # 4 hinzugefügte Schnittstellen-Kovarianz weglassen, dh eine IEnumerable<SomeClass>kann als behandelt werden IEnumerable<object>.
Funktioniert das nur in VS2015? Unter VS2012: 'System.Array' enthält keine Definition für 'Cast' und es konnte keine Erweiterungsmethode 'Cast' gefunden werden, die ein erstes Argument vom Typ 'System.Array' akzeptiert (fehlt Ihnen eine using-Direktive oder eine Assemblyreferenz? )
Ajeh
Danke fürList<object> list = myArray.ToList<object>();
samir105
39
Verwenden Sie den Konstruktor: new List<object>(myArray)
Eine schöne Sache an diesem Stil ist, dass er die Liste erstellt und zurückgibt, sodass Sie weitere Methoden anhängen können (z .Contains(userName). B. ). Nützlich, um eine Menge Logik in eine einzeilige if-Anweisung zu packen :).
Patrick
13
List<object>.AddRange(object[])sollte den Trick machen. Dadurch werden alle Arten von nutzloser Speicherzuweisung vermieden. Sie können auch Linq verwenden, ähnlich wie folgt:object[].Cast<object>().ToList()
Ich musste mit using System.Linq hinzufügen; damit es funktioniert; nicht sicher warum.
user3752281
2
Alles, was jeder sagt, ist richtig, also
int[] aArray = {1,2,3};
List<int> list = aArray.OfType<int> ().ToList();
würde aArray in eine Liste verwandeln, Liste. Das Größte, was in vielen Kommentaren fehlt, ist jedoch, dass Sie diese 2 using-Anweisungen an der Spitze Ihrer Klasse haben müssen
using System.Collections.Generic;
using System.Linq;
Antworten:
List<object> list = myArray.Cast<Object>().ToList();
Wenn der Typ der Array-Elemente ein Referenztyp ist, können Sie die
.Cast<object>()
seit C # 4 hinzugefügte Schnittstellen-Kovarianz weglassen, dh eineIEnumerable<SomeClass>
kann als behandelt werdenIEnumerable<object>
.List<object> list = myArray.ToList<object>();
quelle
List<object> list = myArray.ToList<object>();
Verwenden Sie den Konstruktor:
new List<object>(myArray)
quelle
.Contains(userName)
. B. ). Nützlich, um eine Menge Logik in eine einzeilige if-Anweisung zu packen :).List<object>.AddRange(object[])
sollte den Trick machen. Dadurch werden alle Arten von nutzloser Speicherzuweisung vermieden. Sie können auch Linq verwenden, ähnlich wie folgt:object[].Cast<object>().ToList()
quelle
Der List <> -Konstruktor kann alles akzeptieren, was IEnumerable implementiert, daher ...
object[] testArray = new object[] { "blah", "blah2" }; List<object> testList = new List<object>(testArray);
quelle
private List<object> ConvertArrayToList(object[] array) { List<object> list = new List<object>(); foreach(object obj in array) list.add(obj); return list; }
quelle
Wenn Array-Element und Listenelement identisch sind
List<object> list=myArray.ToList();
quelle
Alles, was jeder sagt, ist richtig, also
int[] aArray = {1,2,3}; List<int> list = aArray.OfType<int> ().ToList();
würde aArray in eine Liste verwandeln, Liste. Das Größte, was in vielen Kommentaren fehlt, ist jedoch, dass Sie diese 2 using-Anweisungen an der Spitze Ihrer Klasse haben müssen
using System.Collections.Generic; using System.Linq;
Ich hoffe das hilft!
quelle
Sie können die Liste auch direkt mit einem Array initialisieren:
List<int> mylist= new List<int>(new int[]{6, 1, -5, 4, -2, -3, 9});
quelle
ein anderer Weg
List<YourClass> list = (arrayList.ToArray() as YourClass[]).ToList();
quelle
Auf diese Weise können Sie ein Objekt senden:
private List<object> ConvertArrayToList(dynamic array)
quelle
Hier ist meine Version:
List<object> list = new List<object>(new object[]{ "test", 0, "hello", 1, "world" }); foreach(var x in list) { Console.WriteLine("x: {0}", x); }
quelle
Sie können dies versuchen,
using System.Linq; string[] arrString = { "A", "B", "C"}; List<string> listofString = arrString.OfType<string>().ToList();
Hoffe, dieser Code hilft dir.
quelle