Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   C# Destruktor in C# aufrufen? (https://www.delphipraxis.net/64077-destruktor-c-aufrufen.html)

Pseudemys Nelsoni 27. Feb 2006 07:08


Destruktor in C# aufrufen?
 
Hoi,

ich habe eine Klasse innerhalb meiner Klasse... Wie rufe ich dort den Konstruktor auf? In C++ war das "delete" soweit ich noch weiss...

Elvis 27. Feb 2006 07:19

Re: Destruktor in C# aufrufen?
 
Es gibt keine Destruktoren in .Net. Du hast auch nur minimale Möglichkeiten die Zerstörung einer Instanz zubeinflussen.
Wenn du Dinge machst, die zum Schluss aufgeräumt werden müssen (Instanzen freigeben ausgenommen, das erledigt die GC), schaue dir mal das IDisposable interface an. In .Net wird für sowas das Disposable Pattern benutzt. ;)

Pseudemys Nelsoni 27. Feb 2006 08:46

Re: Destruktor in C# aufrufen?
 
Oh man, ich merke schon - es wird schwierig(?) :( :oops:

Wenn ich zur Laufzeit 10 UserKlassen erstelle, kann ich davon keine freigeben bis zum Ende des Programms? Oder wie ist das

chaosben 27. Feb 2006 08:52

Re: Destruktor in C# aufrufen?
 
Du brauchst dich nicht mehr um das Freigeben von Speicher kümmern. Der GC (Garbage Collector) prüft, ob du nach dem Zeitpunkt X noch mal auf ein Objekt zugreifen wirst. Wenn die Code-Prüfung ergibt, das du nicht mehr auf diese Objekt zugreifen wirst/kannst, dann gibt der GC das Objekt frei.

Pseudemys Nelsoni 27. Feb 2006 08:54

Re: Destruktor in C# aufrufen?
 
WIe kann sie prüfen wann der User zur Laufzeit das Objekt noch braucht oder nicht?

Elvis 27. Feb 2006 08:59

Re: Destruktor in C# aufrufen?
 
Wenn niemand mehr eine Referenz auf eine Instanz hält wird diese beim nächsten Sweep der GC zerstört.
Solange du nur hübsche .Net Klassen ohne native Anhängsel benutzt hört die Geschichte für dich hier auf und alles ist in Butter... ;)
Wenn nicht, nunja dannn kommen wir wieder zurück zu IDisposable und Konsorten[1]. Denn mit native Krempel läufst du in Bereiche, die die GC nicht verwalten kann. Du implementierst also IDisposable und packst in Dispose den Code zum aufräumen. Außerdem muss der Benutzer nun auch explizit Dispose aufrufen. (Ähnlich wie das Free() in D32)

[1]Die krankeste Konsequenz wären Finalizer, aber ich hasse die Viecher zu sehr um darauf weiter einzugehen. ;)

chaosben 27. Feb 2006 09:04

Re: Destruktor in C# aufrufen?
 
Im Netz gibts ja viele Sachen darüber. Hier mal eine kurze Version und für Hardcore-Fragen was Offizielles.

Pseudemys Nelsoni 27. Feb 2006 10:04

Re: Destruktor in C# aufrufen?
 
Danke für eure Hilfe ;)

Ich glaube aber, dass ich trotzdem mal ein Buch brauche, sonst bin ich hier ewig am dämliche Fragen stellen;).

Ich habe mir eben folgendes bestellt:

Zitat:

Produktbezeichnung Menge Best.Nr. Preis Summe
Microsoft Visual C# 2005 - Schritt für Schritt 1 MS-551 39.90 EUR 39.90 EUR
Dieser Artikel verlässt unser Haus voraussichtlich am 27.02.2006.
Könnt ihr mir sonst noch eins empfehlen?

Elvis 27. Feb 2006 13:11

Re: Destruktor in C# aufrufen?
 
Zitat:

Zitat von Pseudemys Nelsoni
Könnt ihr mir sonst noch eins empfehlen?

Mein Standardtip: "Applied MS .Net Programming" aka "die .Net Bibel" :)
Sehr schön ist auch die C# Edition davon. Es lernt sich sicherlich ganz gut wenn man es gleich richtig sieht. ;)


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