mikrocontroller.net

Forum: PC-Programmierung C# Programierung Destruktor?


Autor: Nestea (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Nestea (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

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

Autor: c# (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: Sven H. (dsb_sven)
Datum:

Bewertung
0 lesenswert
nicht 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?)

Autor: Rufi J (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.