Was bedeutet die Tilde (~) Zeichen tun hier [Duplikat]
Frage
Mögliche Duplizieren:
Was bedeutet die Tilde (~) Mittel in C #?
class ResourceWrapper
{
int handle = 0;
public ResourceWrapper()
{
handle = GetWindowsResource();
}
~ResourceWrapper() //this line here
{
FreeWindowsResource(handle);
handle = 0;
}
[DllImport("dll.dll")]
static extern int GetWindowsResource();
[DllImport("dll.dll")]
static extern void FreeWindowsResource(int handle);
}
Was bedeutet die Tilde tun auf der Linie angezeigt.
Ich dachte, dass es die bitweise NOT-Operator war, infact Ich verstehe nicht wirklich, dass ganzen Block dort, (die Kommentarzeile und die Klammern blovk danach), ist es nicht ein methd ist, oder ein Parameter oder irgendetwas, was ist das und warum ist es eine Tilde, bevor es?
Lösung
Das ist destructor . Es sorgt dafür, dass alle Ressourcen auf der Garbage Collection freigegeben werden.
Andere Tipps
Dies implementiert die Finalizerthread (die Finalize-Methode) der Klasse. Normalerweise sollten Sie nicht einen Finalizer implementieren.
z. tut dies für Klassen, die externen nicht verwalteten Ressourcen halten aber sicher sein, auch das IDisposable-Muster in diesem Fall zu implementieren.
Wie in C ++, ~ClassName
ist die Destruktormethode. Es wird in C #, wenn das Objekt in Frage gestellt wird vom Garbage Collector wird gereinigt. Anders als in C ++, wo es deterministische Zeiten, wenn der Destruktor aufgerufen wird, gibt es keine Möglichkeit, vorherzusagen, wenn es aufgerufen wird (oder auch wenn es genannt wird) in C #.
Was Sie wahrscheinlich suchen, ist das IDisposable
Muster, die eine viel bessere Lösung für diese bereitstellt.
Das ist ein Destructor . Es gibt Ihnen implizite Kontrolle über Ressourcen freigeben. Das heißt, es wird von dem Garbage Collector . Wenn Sie explizite Kontrolle über die Freigabe von Ressourcen wollen, können Sie IDisposable Schauen Sie sich Implementierung finalisieren und Entsorgen aufzuräumen Unmanaged Ressourcen . Die Framework Design Guidelines auch weitere Informationen.
Ack, ich habe gerade die Antwort und kann nicht sehen, wie meine Frage zu löschen. es gibt den Destruktor der Klasse
Ich habe keine Ahnung über C #, aber von dem, was der Code tut, das sieht aus wie ein Deconstructor, sagt
- die Ressource durch
handle
verwiesen frei - set
handle
zu0
sicher sein
würde Art gehen zusammen mit dem Begriff der „nicht“ so gut ...:)
kann ich falsch sein, obwohl ...
greetz
back2dos