Entwickler-Ecke

C# - Die Sprache - Konstruktoren Überschreiben/Überdecken & co


Master_BB - Mi 06.09.06 20:24
Titel: Konstruktoren Überschreiben/Überdecken & co
Hallo,
ich weiß das ist eine billige frage aber in meinem Buch find ich gerade die Lösung nicht.
Und zwar wie überlagere ich Konstructoren in C#?

Also an sich muß mir einer das hier von Delphi nur in C# übersetzten gg. Wer will den Parser spielen?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
class Base
begin
  constructor Create(AValue : Int32); virtual;
end;
class Bla(Base)
begin
  constructor Create(AValue : Int32); override;

  constructor Create(AValue : Int32);
  begin
    inherited(AValue);
    //mehr
  end;
end;


Also was ich brauche ist wie bekomme ich dieses virtual und override in C# hin und
wie greife ich auf die Basis KlassenRoutine Create zu - sprich dieser inherited(AValue) aufruf in C#

Danke und
Gruß


Master_BB - Mi 06.09.06 23:22

hm ok,
in C# vererbt man keien Konstruktoren und Destruktoren.
Diese kleine stelle habe ich gerade im
"Die C# Programmiersprache" Buch von Anders Hejlsberg
gelesen.

damit hat sich die sache dann.

gruß


Robert_G - Fr 08.09.06 11:46

Auch wenn ich normal nicht in deinen Threads antworte, hast du dir mal genau überlegt was in dem Delphi.Net code oben für IL generiert wird? Die CLR hat keine übervirtuellen Konstruktoren (Ohne MetaClasses ja auch schlecht möglich).
Und ich könnte wetten, dass du oben gar keine virtuellen Konstruktoren gebraucht hättest.


Christian S. - Fr 08.09.06 11:50

user profile iconRobert_G hat folgendes geschrieben:
Auch wenn ich normal nicht in deinen Threads antworte,
Könntest Du bitte drauf verzichten, dass jedes Mal zu betonen, wenn Du es doch tust? Das nervt so'n bisschen.


Robert_G - Fr 08.09.06 12:00

user profile iconChristian S. hat folgendes geschrieben:
user profile iconRobert_G hat folgendes geschrieben:
Auch wenn ich normal nicht in deinen Threads antworte,
Könntest Du bitte drauf verzichten, dass jedes Mal zu betonen, wenn Du es doch tust? Das nervt so'n bisschen.
Ts Ts, sicher nicht jedes Mal.
Aber bei manchen will ich einfach dass sie es wissen. ;)


Master_BB - Fr 08.09.06 17:17

also was ich als antwort in einem forum erwarte wo solch
allwissende "Robterts" vorhanden sind, wäre dies hier gewesen
(was ich jetzt durch lästiges suchen doch noch gefunden habe)
-----------
hya, hier so greift man auf den vorfahr Konstruktor zu,
und die überlagerung sieht man hier auch gleich.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
class myBase{
    public myBase(Int32 AParam){/*code*/}
}
class blubb : myBase{
    public blubb(Int32 APara) : base(APara){ //hier per base(parameter) zugriff auf vorgägner
       //code
    }
}


achja und ob der basisklassen konstuktor nun virtual ist oder nicht
war nun nicht wirklich die frage.

gruß


Robert_G - Fr 08.09.06 18:46

user profile iconMaster_BB hat folgendes geschrieben:
also was ich als antwort in einem forum erwarte wo solch allwissende "Robterts" vorhanden sind, wäre dies hier gewesen (was ich jetzt durch lästiges suchen doch noch gefunden habe)
Du sagtest doch, dass du es gefunden hast.
Ich habe das oben nur geschrieben, weil Delphi.Net User vergessen wie man solchen Code außerhalb von Delphi benutzen würde. Virt. Konstruktoren machen es da nicht einfach. ;)