Wie man "Element" von einer Liste "herauszieht"?
Habe ich eine Liste von Karten genannt _deck:
private List<String> _deck = new List<String> {"2h", "3h", "4h", ... }
Dann möchte ich entfernen Sie eine Karte aus der Liste und speichern Sie in eine variable. Ich bin versucht, zu tun:
String p1FirstCard = _deck.RemoveAt(0);
aber ich bin immer der Fehler "Cannot convert type leere String".
In C# - Liste gibt es sowas wie push/pop aber nicht, dass sich am "Kopf" oder "Anfang" der Liste? (Push/pop arbeiten am "Schwanz" oder "Ende" der Liste.)
Wenn nicht, wie sollte ich tun, entfernen Sie das erste element, sondern speichern es in eine variable?
InformationsquelleAutor der Frage Mc' Flips | 2014-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie machen es in zwei Schritten:
Schreiben Sie Ihre eigene Erweiterung helper-Methode (ich fügte hinzu, einen index zu
Pop
wie @Fredou vorgeschlagen:dann rufen Sie
P. S. Der name kann ein wenig verwirrend sein.
Pop
der Regel entfernt das Letzte element, nicht das erste.InformationsquelleAutor der Antwort AlexD
könnte, nutzen Sie einfach die Queue-Klassedass c# bereits haben?
könnte oder Sie verwenden einfach den Stack-Klassedass c# bereits haben?
InformationsquelleAutor der Antwort Fredou
Wenn Sie möchten, eine direkte Entsprechung zu
pop()
haben, müssen Sie ein eigenes zu schreiben, weil ich glaube nicht, dass alles, was in C# automatisch hat ein "Entfernen vom Ende und zurück". Allerdings gibt es sowohl dieQueue
(first in, first out) und dieStack
(first in, last out) Klassen, statt nur einList
.Gibt es auch die
LinkedList
Klasse, die können Sie hinzufügen oder entfernen von sowohl den Anfang oder das Ende, sondern der bereitgestelltenRemoveFirst()
undRemoveLast()
Methoden nicht automatisch wieder zurück auf das Element, das entfernt werden - Sie würde schreiben müssen, eine Erweiterung Methode wie AlexD ist, das zu tun.Alle diese befassen sich mit der Entfernung der Dinge vom Anfang oder Ende der Liste. Wenn Sie nur wollen, zum entfernen eines beliebigen Elements aus der Mitte des
List
es gibt immerList.Remove(item)
welches entfernt ein bestimmtes Element aus der Liste (anstatt von position).InformationsquelleAutor der Antwort Bobson
Gebäude auf AlexD Antwort, ich habe ein paar mehr extension Methoden:
InformationsquelleAutor der Antwort orad
RemoveAt() nichts zurückgibt.
InformationsquelleAutor der Antwort BurnOut