Je suis à la recherche un peu de code et il a de cette déclaration:
~ConnectionManager()
{
Dispose(false);
}
La classe implémente l' IDisposable
interface, mais je ne sais pas si cela fait partie de qui le tilde(~) est utilisé pour.
Je suis à la recherche un peu de code et il a de cette déclaration:
~ConnectionManager()
{
Dispose(false);
}
La classe implémente l' IDisposable
interface, mais je ne sais pas si cela fait partie de qui le tilde(~) est utilisé pour.
~ est le destructeur
Finaliser
En C#, la méthode Finalize effectue les opérations qu'un standard C++ destructeur ferait. En C#, vous n'avez pas de nom de Finaliser -- vous d'utiliser le C++ destructeur de la syntaxe de placer un symbole tilde ( ~ ) devant le nom de la classe.
Disposer
Il est préférable de disposer des objets dans un Close()
ou Dispose()
méthode qui peut être appelé explicitement par l'utilisateur de la classe. Finaliser (destructeur) sont appelés par le GC.
Le IDisposable interface indique au monde que votre classe est titulaire sur les ressources qui doivent être éliminés et fournit aux utilisateurs un moyen de les libérer. Si vous avez besoin de mettre en œuvre un outil de finalisation dans votre classe, votre méthode dispose doit utiliser l' GC.SuppressFinalize()
méthode pour s'assurer que la finalisation de votre instance est supprimée.
Ce qu'il faut utiliser?
Il n'est pas légal de faire appel d'un destructeur de manière explicite. Votre destructeur sera appelé par le garbage collector. Si vous ne poignée de précieuses ressources non managées (tels que les descripteurs de fichiers) que vous souhaitez fermer et d'en disposer le plus rapidement possible, vous devez implémenter l'interface IDisposable.
C'est un outil de finalisation. Pour être honnête, vous devriez très rarement besoin d'écrire un finaliseur. Vous avez vraiment besoin d'écrire un si:
IntPtr
) et vous ne pouvez pas utiliser SafeHandle
ce qui le rend plus facileIDisposable
dans une classe qui n'est pas scellé. (Ma préférence est pour sceller les classes, sauf s'ils sont conçus pour l'héritage.) Un finaliseur est une partie de l'canonique modèle dispose dans de tels cas. Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.