Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Basisklasse in abgeleitete Klasse konvertieren
TWolf
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

Basisklasse in abgeleitete Klasse konvertieren

beantworten | zitieren | melden

Hallo,

angenommen ich habe zwei Klassen:


public class Basis
{

}

public class Kind : Basis
{

}

Nun funktioniert ja folgendes:


Kind kind = new Kind();
Basis basis;

basis = kind;

Wie kann ich nun elegant folgendes herstellen


Kind kind;
Basis basis = new Basis();

kind = basis;

Mehr als einen Konstruktor, der an dieser Stelle die Basis entgegennimmt, ist mir nicht eingefallen. Gibt es vielleicht noch einen besseren Weg?
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

Bevor der Thread geschlossen wird.... ;)

Wenn du mal ein paar Grundlagen über Objektorientierung durchstöberst...

http://openbook.galileocomputing.de/oop/

vor allem eventuell die Geschichte mit Vererbung,
dann wirst du schnell rausfinden warum Version 1 geht und Version 2 nicht...
private Nachricht | Beiträge des Benutzers
Cat
myCSharp.de - Member

Avatar #avatar-3070.jpg


Dabei seit:
Beiträge: 790

beantworten | zitieren | melden

Hi TWolf,

willst du so etwas wie in Vererbung: bei Instanziierung einer Kindklasse alle Eigenschaften der übergebenen Basisklasse setzen ?
Dann ist das keine gute Idee, s. Beitrag von herbivore
private Nachricht | Beiträge des Benutzers
TWolf
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

beantworten | zitieren | melden

Hallo [email protected],

warum Version zwei nicht geht ist mir klar, ich hatte jedoch nach einer eleganten Methode gefragt um es zu implementieren.

Hast du hierzu vielleicht eine Idee?
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

Hi...
Zitat
warum Version zwei nicht geht ist mir klar

sorry... aber das glaub ich dir nicht, sonst würdest du nicht
fragen wie man das eleganter implementieren kann.
Es geht nicht...


Aber erklär mal was du genau damit vorhast... so wird das auf alle Fälle nichts...
private Nachricht | Beiträge des Benutzers
TWolf
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

beantworten | zitieren | melden

Hallo [email protected],

mit dem Beispiel ging es mir auch nur darum zu verdeutlichen was ich gerne möchte und welches Ziel ich verfolge. Sicherlich hätte ich das Beispiel besser oder die Beschreibung deutlicher schreiben können.

Warum das ganze nicht funktioniert ist ja eigentlich logisch und mit einem einfachen Text-Beispiel erklärt: Ente ist immer Lebewesen, aber Lebewesen ist nicht immer Ente.

Ich habe es nun über den Konstruktor gelöst, unabhängig davon ob es noch eine elegantere Lösung gibt.

Trotzdem vielen Dank für die Antwort.
private Nachricht | Beiträge des Benutzers
7.e.Q
myCSharp.de - Member

Avatar #avatar-3402.jpg


Dabei seit:
Beiträge: 938
Herkunft: Scheeßel

beantworten | zitieren | melden

Eine nach Kind gecastete Referenz wirst du auf die Basis-Instanz wohl nicht kriegen. Bau dir einen Copy-Constructor in der Kind-Klasse, der ein Basis-Objekt übernimmt, die entsprechenden Basis-Properties kopiert und die erweiterten Kind-Properties auf default-Werte setzt. Oder einen entsprechenden impliziten Cast-Operator.

Aber damit bekommst du nur eine Kopie von basis.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7559
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,

im oben verlinkten Thread zu Vererbung: bei Instanziierung einer Kindklasse alle Eigenschaften der übergebenen Basisklasse setzen wurde hierzu alles nötige gesagt. Es ist nicht notwendig das hier zu wiederholen. Daher wird dieses Thema geschlossen.


mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers