Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

23.09.2012, 13:14

C# Objekt-Verwaltung mit List<>

Hallo,

ich versuche mich gerade an einer Art Objekt-Verwaltung und wollte dazu für jede Objektart eine "List" verwenden. Also jeweils eine für einsammelbare Objekte, für Hindernisse, etc. .
Jetzt dachte ich mir, dass ich dann eine Basis-Klasse für jede Objektart schreibe, in der dann Textur, Position, usw. enthalten sind. Die einzelnen Objekte erben nun von dieser. Soweit klappt auch alles. Wenn ich nun die Parent-Klasse als Datentyp für die Liste angebe, funktioniert das nicht. Das habe ich mir auch schon irgendwie gedacht. Aber gibt es eine Möglichkeit nun alle Objekte in einer Liste abzulegen?

Also ich habe jetzt die Klassen Pilz und Schnitzel, die von Objekt erben und beide hätte ich jetzt gern in einer Liste um sie in einem "Rutsch" durchlaufen zu lassen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

23.09.2012, 13:18

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Ingredient {
public void PrepairForDinner ( );
}

class Mushroom : Ingredient { }

class Cutlet : Ingredient { }

List<Ingredient> dinner = new List<Ingredient> ( );
dinner.Add ( new Mushroom ( ) );
dinner.Add ( new Cutlet ( ) );

foreach ( var ingredient in dinner )
    ingredient.PrepairForDinner ( );

Geht problemlos.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

MitgliedXYZ

Alter Hase

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

3

23.09.2012, 13:33

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Ingredient {
public void PrepairForDinner ( );
}

class Mushroom : Ingredient { }

class Cutlet : Ingredient { }

List dinner = new List ( );
dinner.Add ( new Mushroom ( ) );
dinner.Add ( new Cutlet ( ) );

foreach ( var ingredient in dinner )
    ingredient.PrepairForDinner ( );

Geht problemlos.</ingredient></ingredient>
Du hast innerhalb von vier Minuten geantwortet und den Code geschrieben, oder ist das irgend so ein Standard Beispiel?

4

23.09.2012, 13:45

Uff..., ich habe einfach nur vergessen den Kontruktor der List aufzurufen. Das ging aus der Fehlermeldung irgendwie nicht hervor.

Vielen Dank für die Antwort :)

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

23.09.2012, 16:47

Naja 4 Minuten ist zwar schon fix, aber unser Cobold programmiert ja auch nicht erst seit ein paar Tagen. Geht dabei ja um einen klassischen Anwendungsfall. Ich denke da musste er auch nicht viel nachdenken beim tippen;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

6

23.09.2012, 16:47

@MitgliedXYZ: Das wird er schnell runtergetippert haben. Als geübter .NET Entwickler ist das kein Problem :)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

23.09.2012, 17:59

Jo, da gab's eigentlich nicht viel zu überlegen. Basis-Klasse, zwei Ableitungen, Liste. Das ist ratz-fatz dahin getippt. Ist kein Standard-Beispiel (was man kopieren könnte oder so), aber auch kein Akt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige