AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kovarianz in C#?

Ein Thema von phXql · begonnen am 21. Apr 2008 · letzter Beitrag vom 21. Apr 2008
Antwort Antwort
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#1

Kovarianz in C#?

  Alt 21. Apr 2008, 15:30
Hallo Leute,

folgender Code
Code:
class A
{
  public virtual A Foo()
  {
    return new A();
  }
}
   
class B: A
{
  public override B Foo()
  {
    return new B();
  }
}
wirft den Fehler
Code:
'Covariant.Program.B.Foo()': return type must be 'Covariant.Program.A' to match overridden member 'Covariant.Program.A.Foo()' (CS0508)
Sollte das die Kovarianz nicht zulassen? Ich meine mich erinnern zu können, dass sowas in Java geht.
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Benutzerbild von alias5000
alias5000

Registriert seit: 10. Sep 2005
Ort: Heilbronn
268 Beiträge
 
#2

Re: Kovarianz in C#?

  Alt 21. Apr 2008, 16:13
Wie wärs damit?
Code:
class A
{
  public virtual A Foo()
  {
    return new A();
  }
}
   
class B: A
{
  public override A Foo()
  {
    return new B();
  }
}
Die Änderung ist nur, dass B.Foo auch den Rückgabetyp A hat.

Gruß
alias5000
Im Interesse der Purierung des germanischen Ideoms ist es opertum den immensen Usus peregrieder Verben auf ein Minimum zu reduzieren.
--> www.lanchat2.de <---
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#3

Re: Kovarianz in C#?

  Alt 21. Apr 2008, 16:52
Wo der "Fehler" liegt ist mir klar. Aber wieso kann Java das (was man als Kovarianz bezeichnet) und C# nicht?
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#4

Re: Kovarianz in C#?

  Alt 21. Apr 2008, 17:10
Zitat von phXql:
Aber wieso kann Java das (was man als Kovarianz bezeichnet) und C# nicht?
Was ist das für eine Frage?
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#5

Re: Kovarianz in C#?

  Alt 21. Apr 2008, 17:16
Wieso kann Java Kovarianz bei Vererbung und C# nicht?
Jetz kapiert?
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#6

Re: Kovarianz in C#?

  Alt 21. Apr 2008, 17:18
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'?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Kovarianz in C#?

  Alt 21. Apr 2008, 17:28
@phXql: Kovarianz und Kontravarianz gibt es in C# nur für Delegates. Quelle
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Kovarianz in C#?

  Alt 21. Apr 2008, 17:43
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 Serie geschrieben.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#9

Re: Kovarianz in C#?

  Alt 21. Apr 2008, 18:56
Zitat von s-off:
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'?
Ich dachte C# würde in Sachen Objektorientierung und Fähigkeiten Java in nichts nachstehen. Von dem her verstehe ich deinen Vergleich nun nicht wirklich. Oder ist Java zu C# konzeptionell so unterschiedlich?

An alle: Danke für die Beantwortung meiner Frage. Dann muss ich wohl warten...
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#10

Re: Kovarianz in C#?

  Alt 21. Apr 2008, 19:24
Zitat von phXql:
Ich dachte C# würde in Sachen Objektorientierung und Fähigkeiten Java in nichts nachstehen. Von dem her verstehe ich deinen Vergleich nun nicht wirklich. Oder ist Java zu C# konzeptionell so unterschiedlich?
Mir ist vollkommen klar, worauf Du hinaus wolltest - ich dachte eigentlich, Du würdest irgendwann merken, dass ich mich absichtlich stur stelle, und Deine Frage anders formulieren

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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz