Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [C#] Geerbten Konstruktor aufrufen (https://www.delphipraxis.net/139128-%5Bc-%5D-geerbten-konstruktor-aufrufen.html)

xZise 24. Aug 2009 10:31


[C#] Geerbten Konstruktor aufrufen
 
Hallo ihr,
ich versuche gerade ein kleines Programm mal in C# zu schreiben ;)

Nun bin ich schon ziemlich weit aber ich hänge gerade an einer Stelle. Und zwar brauche ich einen TreeNode der mir auch ein Objekt speichert. Zuerst hatte ich da an .Data aus Delphi gedacht, aber so was scheint da nicht zu geben. Und dann ist mir die Idee gekommen einfach eine Klasse davon abzuleiten. Gesagt getan:
Code:
class TreeNodePlus : TreeNode
{
    private DfmEntry FEntry;

    public DfmEntry GetEntry()
    {
        return FEntry;
    }
    public void SetEntry(DfmEntry Value)
    {
         FEntry = Value;
    }
}
Und jetzt will ich diese Klasse verwenden:
Code:
foreach (FileInfo DfmFile in dir.GetFiles("*.dfm"))
{
     TreeNodePlus tn = new TreeNodePlus(DfmFile.Name);
     tn.Checked = true;
     DfmEntry entry = new DfmEntry(DfmFile.FullName);
     tn.SetEntry(entry);

     Root.Add(tn);
     FileCnt++;
}
Aber jetzt meckert er rum:
Zitat:

Fehler 1 "WindowsFormsApplication1.TreeNodePlus" enthält keinen Konstruktor, der 1-Argumente akzeptiert. C:\Users\xzise\Documents\Visual Studio 2008\Projects\DfmErase\DfmErase\Form1.cs 70 35 DfmErase
Nun wie kann ich ihm jetzt sagen, dass das stimmt, aber er den Konstruktor der alten Klasse aufrufen soll. Ich meine ich muss doch wohl nicht jeden Konstruktor neu definieren (nagut ich benutze nur ein. Aber das heißt ja nicht, dass ich immer nur einen benutze)?

MfG
xZise

mkinzler 24. Aug 2009 10:34

Re: [C#] Geerbten Konstruktor aufrufen
 
Du hast ja auch keinen neuen Konstruktor deklariert.

xZise 24. Aug 2009 10:35

Re: [C#] Geerbten Konstruktor aufrufen
 
Nun unter Delphi tue ich das ja auch nicht zwingend. Zum Beispiel, wenn ich TObjectList überlade.

MfG
xZise

jfheins 24. Aug 2009 10:37

Re: [C#] Geerbten Konstruktor aufrufen
 
Konstruktoren werden anscheinend nicht vererbt: http://msdn.microsoft.com/de-de/library/ms173149.aspx
Zitat:

Wenn eine Klasse so definiert wird, dass sie von einer anderen Klasse abgeleitet wird, erhält die abgeleitete Klasse implizit alle Member der Basisklasse, mit Ausnahme ihrer Konstruktoren und Destruktoren. In der abgeleiteten Klasse wird dadurch der Code der Basisklasse wieder verwendet, ohne dass dieser erneut implementiert werden muss. In der abgeleiteten Klasse können zusätzliche Member hinzugefügt werden. Auf diese Weise erweitert die abgeleitete Klasse die Funktionalität der Basisklasse.
Da musste wohl sowas machen:
Code:
class TreeNodePlus : TreeNode

    private DfmEntry FEntry;

    public TreeNodePlus(string a) : base(a) { } 

    public DfmEntry GetEntry()
    { 
        return FEntry;
    } 
    public void SetEntry(DfmEntry Value)
    { 
         FEntry = Value;
    } 
}

xZise 24. Aug 2009 10:43

Re: [C#] Geerbten Konstruktor aufrufen
 
Hrmpf :D

Aber warum das so:
Code:
public TreeNodePlus(string a) : base(s) { }
?
Müsste das nicht base(a) sein?

MfG
xZise

jfheins 24. Aug 2009 10:48

Re: [C#] Geerbten Konstruktor aufrufen
 
Zitat:

Zitat von xZise
Müsste das nicht base(a) sein?

Ist es doch :mrgreen: :angel:

xZise 24. Aug 2009 10:59

Re: [C#] Geerbten Konstruktor aufrufen
 
Achso hatte ich ganz übersehen ;)

Naja danke euch allen für die Hilfe in der Delphi(C#)-PRAXiS :D

MfG
xZise


Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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