Qu'est-ce que le caractère tilde (~) font ici [double]
Question
Possible en double: Qu'est-ce que le tilde (~) moyenne en 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);
}
Qu'est-ce que le tilde faire sur la ligne indiquée.
Je pensais que c'était l'opérateur NOT binaire, enfait je ne comprends pas vraiment ce bloc tout là, (la ligne commentée et les parenthèses blovk après), il est pas un methd, ou un paramètre ou quoi que ce soit, ce qui est et pourquoi est-il un tilde avant qu'il?
Autres conseils
met en œuvre le finaliseur (la méthode Finaliser) de la classe. Normalement, vous ne devriez pas mettre en œuvre un finaliseur.
par exemple. faire pour les classes qui détiennent des ressources non gérées externes, mais assurez-vous de mettre en œuvre le modèle IDisposable dans ce cas aussi.
Comme en C ++, ~ClassName
est la méthode de destructor. Il est appelé en C # lorsque l'objet en question est nettoyée par le garbage collector. Contrairement à C ++ où il y a des moments déterministes lorsque le destructeur est appelé, il n'y a aucun moyen de prédire quand il sera appelé (ou même si elle sera appelée) en C #.
Ce que vous cherchez probablement est le modèle de IDisposable
, qui fournit une meilleure approche à ce sujet.
C'est un Destructeur . Il vous donne un contrôle implicite sur la libération des ressources. Autrement dit, il est appelé par le IDisposable Consultez mise en œuvre Finaliser et Dispose pour nettoyer des Unmanaged ressources . Framework Design Guidelines a également plus d'informations.
Ack, je viens de trouver la réponse et ne peut pas voir comment supprimer ma question. il indique le Destructeur de la classe
Je n'ai pas la moindre idée de C #, mais de ce que le code fait, cela ressemble à une deconstructor, en disant
- libérer la ressource référencée par
handle
- set
handle
à0
pour être sûr
serait de nature vont de pair avec la notion de « non » et ...:)
Je peux me tromper mais ...
greetz
back2dos