![]() |
Kovarianz in C#?
Hallo Leute,
folgender Code
Code:
wirft den Fehler
class A
{ public virtual A Foo() { return new A(); } } class B: A { public override B Foo() { return new B(); } }
Code:
Sollte das die Kovarianz nicht zulassen? Ich meine mich erinnern zu können, dass sowas in Java geht.
'Covariant.Program.B.Foo()': return type must be 'Covariant.Program.A' to match overridden member 'Covariant.Program.A.Foo()' (CS0508)
|
Re: Kovarianz in C#?
Wie wärs damit?
Code:
Die Änderung ist nur, dass B.Foo auch den Rückgabetyp A hat.
class A
{ public virtual A Foo() { return new A(); } } class B: A { public override A Foo() { return new B(); } } Gruß alias5000 |
Re: Kovarianz in C#?
Wo der "Fehler" liegt ist mir klar. Aber wieso kann Java das (was man als Kovarianz bezeichnet) und C# nicht?
|
Re: Kovarianz in C#?
Zitat:
|
Re: Kovarianz in C#?
Wieso kann Java Kovarianz bei Vererbung und C# nicht?
Jetz kapiert? :roll: |
Re: Kovarianz in C#?
Mensch Junge,
'kapiert' habe ich Deine Frage schon vor Deiner ausführlichen Erläuterung... Warum kann man mit einem Staubsauger keine Heizung entlüften? Jetzt 'kapiert'? |
Re: Kovarianz in C#?
@phXql: Kovarianz und Kontravarianz gibt es in C# nur für Delegates.
![]() |
Re: Kovarianz in C#?
C# unterstützt Ko- und Kontravarianz nur bei Arrays und Methodengruppen->Delegates, die CLR kennt außerdem variante Interfaces und Delegates; heißt also warten auf eine zukünftige CLR ;) . Eric Lippert (C#-Team) hat übrigens zu dem Thema eine ganze
![]() |
Re: Kovarianz in C#?
Zitat:
An alle: Danke für die Beantwortung meiner Frage. Dann muss ich wohl warten... |
Re: Kovarianz in C#?
Zitat:
Obwohl C# aus der Reihe der C-Sprachen kommt, ist sie Java schon ähnlicher, als bspw. C++ - aber das weißt Du ja sicher. Das impliziert aber nicht, dass alle Features der einen, auch Bestandteil der anderen Sprache sind. Aber es ist doch umso schöner, dass man sich noch auf etwas freuen kann, was vielleicht irgendwann einmal kommen wird ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz