At 11:19 AM 12/28/2003, you wrote:
Trotzdem, das geht nicht:
>Dim gc as New Circle
>Dim gcc as GraphicCircle
>gcc = CType(gc, GraphicCircle)

das geht schon:
>Dim gc as Circle
>Dim gcc as GraphicCircle
>gcc = CType(gc, GraphicCircle)

ich m�chte ganz gern verstehen, wie das konkret im Speicher abl�uft.
Laut den obigen Beispielen, bedeutet dies, dass ein "konkret erstelltes Objekt" der Basisklasse nicht MEHR konvertiert werden kann, aber nur eine deklarierte Variable des Typs der Basisklasse kann schon konvertiert werden.

Machen wir es so:


Kraftfahrzeug -> Automobil -> Pinzgauer 6x6

Die Klasse Pinzgauer 6x6 erbt alle Eigenschaften/Methoden/... der Klasse Automobil, das seinerseits von Kraftfahrzeug erbt. Wenn Du nun eine Instanz der Klasse Pinzgauer 6x6 erstellst, kann die alles was ein Automobil und ein Kraftfahrzeug auch kann. Dh, Du kannst einen Pinzgauer 6x6 auch als Kraftfahrzeug betrachten, weil es das alles ererbt hat.

Was nicht funktioniert, ist ein generisches Kraftfahrzeug pl�tzlich zum Pinzgauer 6x6 zu erkl�ren. Entweder es war vorher schon einer (vorheriger Downcast eines Pinz zu einem Kraftfahrzeug), oder es gibt eine InvalidcastException, weil das Kraftfahrzeug eben nicht die Eigenschaften/Methoden/... des Pinz beinhaltet.

Es kommt immer drauf an, was in der Variable drinnen ist - ist im Kraftfahrzeug ein Pinz drinnen, kannst Du ihn wieder zum Pinz machen, durch einen Cast. Ist keiner drinnen, geht es nicht.

Chris



_______________________________________________
Vb.net mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/vb.net

Odpovedet emailem