Détruire un objet en C#
Comment détruire un objet dans un bloc finally.
Par exemple
Public void fnName()
{
ClassName obj = new ClassName();
try {
}
catch() {
}
finally {
//destroy obj here
}
}
obj = null; devrait être suffisant.......
Si la Classe de l'objet implémente IDisposable, vous pouvez appeler obj.Dispose().
obj = null est assez inutile si la variable obj est définie dans une fonction de la portée (depuis la référence existe sur la pile). Êtes-vous essayer de nettoyer les ressources?
eh bien, puisque c'est une variable locale, vous n'avez pas vraiment à faire
Comme vesan dit, nous allons le garbage collector prendre. À moins que votre classe implémente
Si la Classe de l'objet implémente IDisposable, vous pouvez appeler obj.Dispose().
obj = null est assez inutile si la variable obj est définie dans une fonction de la portée (depuis la référence existe sur la pile). Êtes-vous essayer de nettoyer les ressources?
eh bien, puisque c'est une variable locale, vous n'avez pas vraiment à faire
obj=null;
. Si elle n'est pas référencée nulle part ailleurs, le garbage collector prendre soin d'elle.Comme vesan dit, nous allons le garbage collector prendre. À moins que votre classe implémente
IDisposable
ne vous inquiétez pas à ce sujetOriginalL'auteur sajbeer | 2014-09-10
Vous devez vous connecter pour publier un commentaire.
Ne rien faire. Votre référence (obj) passe hors de portée. Ensuite, le Garbage Collector venir et détruire votre objet.
Si il y a (non géré) des ressources qui doivent être détruites immédiatement, puis de mettre en œuvre l'interface IDisposable et appel Jeter dans le finaliser bloc. Ou mieux, utiliser l'instruction à l'aide.
MODIFIER
Comme suggéré dans les commentaires, quand votre nom de Classe implémente IDisposable, vous pouvez soit le faire:
Ou, avec une instruction d'utilisation:
using
pourrait être utile.OriginalL'auteur MarkO
Tout d'abord, il n'y a rien qui s'appelle
Destroy
en langage C#. Au lieu de cela, nous appelonsDispose
.La Garbage Collector exécute automatiquement les procédures de nettoyage lorsqu'un objet est hors de portée, mais pour les ressources non managées comme les sockets, db appels, etc et vous avez besoin de
Dispose
l'objet comme indiqué ci-dessous:...et de mettre en œuvre
Dispose
fonctionnalité dans votre classe, comme indiqué ci-dessous:Une autre façon d'entraver la durée de vie d'un objet est d'écrire votre code à l'intérieur d'un
using
bloc comme indiqué ci-dessous:Pour plus de détails pour l'utilisation de la vérification, il ici
"C#" ne peut pas faire tout le nettoyage; le .NET Framework et le Garbage Collector ne. "C#" est juste un langage de programmation.
oui mise à jour merci @UweKeim
OriginalL'auteur Neel