Ich möchte eine Liste erstellen, die alle Objekte für alle verschiedenen Einheiten enthält, die in meinem Spiel erzeugt werden, aber sie sind nicht alle dieselbe Klasse. Sie alle sind Unterklassen der Haupteinheitenklasse, wenn das helfen würde. Aber im Grunde habe ich eine Haupteinheitsklasse mit der grundlegenden Funktionalität, dann mehr für Schwertkämpfer, Pikeman, usw., und ich möchte in der Lage sein, alle verschiedenen Typen in eine Liste zu setzen, um sie leichter verwalten zu können. Ist das möglich?C# - Liste der verschiedenen Arten von Objekten
Antwort
Ja, das ist möglich.
Wie Rob in seinem Kommentar sagte, müssen Sie eine List<SharedBaseClass>
machen.
var someList = new List<SharedBaseClass>();
Wenn Sie mit einem bestimmten Element in der Liste zu interagieren versuchen, müssen Sie auf die richtige Unterklasse zurückgeworfen:
// throws an exception if type wrong
var someElement = (desiredSubClass) someList[someElementIndex];
// return null if type wrong
var someElement = someList[someElementIndex] as desiredSubClass;
Sicherer zu tun 'var someElement = someList [index] als DesiredSubclass' dann machen Sie einen Null-Check auf 'someElement'. Alternativ, 'someList.OfType
@KMoussa danke, habe ich meine Antwort aktualisiert! – Slvrfn
Slvrfn ‚s anwer sollte funktionieren. Wenn Sie beim Casting in Unity keinen Einfluss auf die Leistung haben, können Sie auch eine Variable in der Unterklasse erstellen und sie im Schlüsselwort mit dem Schlüssel this
initialisieren.
Angenommen, Sie haben zwei Klassen haben Sie erben von:
public class FirstBase
{
public int speed = 50;
}
public class SecondBase : FirstBase
{
public int live = 5;
}
und dann Unterklasse:
public class MySubClass : SecondBase
{
public FirstBase firstBase;
public SecondBase secondBase;
public MySubClass()
{
firstBase = this;
secondBase = this;
}
}
Sie nicht mehr werfen müssen. Sie können die definierten Variablen firstBase und secondBase von MySubClass
verwenden.
List<MySubClass> subClass = new List<MySubClass>();
subClass.Add(new MySubClass());
FirstBase firstBase = subClass[0].firstBase;
SecondBase secondBase = subClass[0].secondBase;
Problem mit diesem ist Ich möchte eine Reihe von Unit-Typen im Grunde haben, so kann ich sie anrufen, und sie sind nicht alle Unterklassen von jedem toher –
Nun, Sie sagten, sie sind Unterklasse in Ihrer Frage. TBH, wenn Sie eine gute Antwort haben möchten, geben Sie bitte beim nächsten Mal einen Code in Ihre Frage ein. Die Probe, die Sie zur Verfügung stellen, wird den Leuten sagen, was Sie tun. – Programmer
- 1. Füllen Liste mit verschiedenen Arten von Objekten
- 2. C++ - Array von verschiedenen Arten von Objekten
- 3. Wie man ArrayList von verschiedenen Arten von Objekten macht?
- 4. Können Sie eine Reihe von verschiedenen Arten von Objekten haben?
- 5. Wie ein JSON-Array mit verschiedenen Arten von Objekten
- 6. schnelle Enumeration für Array mit verschiedenen Arten von Objekten
- 7. Vergleichen Sie Elemente von zwei verschiedenen Arten von Listen C#
- 8. C# Liste der verschiedenen Klassen
- 9. C# Liste der verschiedenen Datentypen
- 10. Verwenden von List in DynamoDB von AWS mit verschiedenen Arten von Objekten
- 11. Parse Wörterbuch mit verschiedenen Arten von Werten
- 12. Wie Kopiere Liste des Datenbankobjekts in verschiedenen Arten von Listenobjekt?
- 13. Mehrere Arten von Objekten in Java-Containern
- 14. eine Liste von Objekten, indem sie mit einer weiteren Liste von verschiedenen Objekten zu vergleichen
- 15. C#, Unity - Einzelfunktion mit mehreren verschiedenen Objekten
- 16. Task.WhenAll mit verschiedenen Arten
- 17. RxSwift Reihe von Variablen mit verschiedenen Arten
- 18. C# 3.5 Merge 2 Listen von 2 verschiedenen Arten
- 19. Wie ich verschiedene Arten von Objekten in einer generischen Liste in C#
- 20. Summenwerte von zwei verschiedenen Objekten
- 21. Kombinieren Futures von verschiedenen Arten mit Katzen
- 22. Scala Array von verschiedenen Arten von Werten
- 23. Kopieren von Objekten mit verschiedenen Zuweisern in C++
- 24. Liste der verschiedenen IReliableDictionaries
- 25. Erstellen Sie eine Liste von Objekten C#
- 26. C#: Unveränderbare Ansicht von Objekten einer Liste?
- 27. Stateful Schleife mit verschiedenen Arten von Brüchen
- 28. Deserialisieren einer JSON-Liste von Objekten C#
- 29. Linq: Außer zwei verschiedenen Arten von Wörterbüchern
- 30. Die verschiedenen Arten von SOLR-Commits verstehen
Aber das hätte nicht die Informationen von der Unterklasse drin wäre es? –
Sicher wäre es, Sie können das komplette Objekt hinzufügen. Sie müssen es jedoch beim Abrufen an das bevorzugte Objekt übergeben. – NikxDa
Es ist besser, Listen von Objekten zu erstellen. Wenn Sie alle Objekte durchlaufen müssen, wird der Overhead sehr klein sein (beim Durchlaufen jeder Liste in der Hauptliste), aber das Durchlaufen eines speziellen Objekttyps in einer eigenen Liste wird viel schneller sein als das Durchsuchen einer großen Liste mit allen Objekten. – crea7or