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?

War es hilfreich?

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

  1. die Ressource durch handle verwiesen frei
  2. set handle zu 0 sicher sein

würde Art gehen zusammen mit dem Begriff der „nicht“ so gut ...:)

kann ich falsch sein, obwohl ...

greetz

back2dos

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top