Forum: PC-Programmierung C# Programierung Destruktor?


von Nestea (Gast)


Lesenswert?

Hallo Alle zusammen,

Ich bin beim Lesen eines Handbuches auf ein Kapitel gestossen das über 
den Destruktor handelt.

Ich selbst kann mir trotz der guten Erklärung leider nicht vorstellen 
worum es sich genau handelt.

Bis jez weis ich nur, dass es sich um das Beenden eines Objektes 
handelt.

Über gute Erklärungen wär ich sehr dankbar!

mfg

von Severino R. (severino)


Lesenswert?

Nestea schrieb:
> Hallo Alle zusammen,
>
> Ich bin beim Lesen eines Handbuches auf ein Kapitel gestossen das über
> den Destruktor handelt.
>
> Ich selbst kann mir trotz der guten Erklärung leider nicht vorstellen
> worum es sich genau handelt.

Und jetzt suchst Du hier nach einer noch besseren Erklärung?
Wie wärs, wenn Du die gute Erklärung posten würdest, um zu vermeiden, 
dass jemand in etwa dieselbe, für Dich nutzlose erklärung verfasst?

Kurz und vereinfacht gesagt, brauchst Du in C# einen Destruktor nur, um 
Ressourcen freizugeben, die nicht automatisch von .NET freigegeben 
werden.

Alles klar?

von ... .. (docean) Benutzerseite


Lesenswert?

Wenn dein Objekt wild andere Objekte dynamisch anlegt, und vlt. noch per 
zeiger...

Dann sorgt der Destruktor dafür das alles wieder aufgeräumt wird (also 
Speicher wieder freigegeben wird)

von Nestea (Gast)


Lesenswert?

Danke für die Antwort, genau nach dieser Antwort hab ich gesucht.

Ich poste die Erklärung trotzdem noch:

----------------------------------------------------------------------
Destruktor

Ein Konstruktor wird aufgerufen, wenn das Objekt einer Klasse erzeugt 
wird. Damit beginnt der Lebenszyklus des Objekts, der dann endet, wenn 
das Pendant des Konstruktors aufgerufen wird: der Destruktor. Im 
Destruktor sind oft Anweisungen enthalten, um die von einem Objekt 
zusätzlich beanspruchten Fremdressourcen freizugeben, die beispielsweise 
andere Systeme belasten. Dazu gehören unter anderem Netzwerk- oder 
Datenbankverbindungen, die in einer objektinternen Referenz vorgehalten 
werden.

Der Umstand, der zur Aufgabe eines konkreten Objekts und dem damit 
verbundenen Destruktoraufruf führt, kann

das Verlassen des Gültigkeitsbereichs der Objektvariablen oder
die Zuweisung von null an die Objektreferenz
sein. Das bedeutet jedoch nicht, dass beim Eintreten einer dieser beiden 
Bedingungen augenblicklich der Destruktor ausgeführt wird. Tatsächlich 
kann das noch eine unbestimmbare Zeit dauern. Mit anderen Worten 
bedeutet dies, dass das Objekt zwar aus Sicht des Programms nicht mehr 
existiert, sich jedoch immer noch im Speicher befindet und diesen 
letztendlich belastet.

-------------------------------------------------------------

von c# (Gast)


Lesenswert?

Implementiere in Deinem Objekt das IDisposable Interface und 
überschreibe die Dispose Methode (Wenn überhaupt gebraucht). In der 
Regel räumt der Garbage Collector auf. Mein weiss halt nur nie, wann er 
es macht ;-)

von Sven H. (dsb_sven)


Lesenswert?

Kurzum, für "normale" Programme, die keine unsafe Zeiger Sauereien 
machen brauchst du den Destruktor nicht.

Ist aber schön, dass das in deinem Buch erwähnt wird (ist das nen c++ 
Buch?)

von Rufi J (Gast)


Lesenswert?

Sven H. schrieb:
> Ist aber schön, dass das in deinem Buch erwähnt wird (ist das nen c++
> Buch?)

Der Titel sagt doch schon, dass das ein C# Buch sein muss, und zufällig 
kenne ich diesen Abschnitt--> Visual C# openbook galileo computing

Rudi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.