Comment nettoyer les ressources non gérées en C # [duplicate]
J'ai cette classe:
public class A
{
//Some logic code here
}
Ma question est de savoir comment puis-je supprimer ou détruire tout objet créé sur la base de cette classe après avoir quitté la portée?
Par example:
A a = new A();
//some code here
après le //some code here
je veux que l' a
objet soit détruit ou éliminé et libérant sa mémoire allouée.
Réponses
Je vais ignorer le titre et me concentrer sur le corps de la question car il semble évident à partir de la question quel est le problème.
La réponse courte: vous ne le faites pas. Cela sera pris en charge automatiquement par le ramasse-miettes lorsqu'il le jugera nécessaire. (Vous n'avez pas besoin d'exécuter le ramasse-miettes. Cela se produit automatiquement.)
Le garbage collector recherche ensuite les entités qui sont hors de portée, comme a
dans votre exemple, et libère l'espace qu'elles ont utilisé. Il verra alors que les internes de a
sont également, évidemment, hors de portée (à moins qu'ils ne soient référencés ailleurs dans votre code), et les gèrent.
Cela dit, lorsque vous utilisez des variables de classes qui implémentent, Dispose
il est préférable d'appeler Dispose
explicitement ou d'utiliser des using
blocs pour y parvenir. Vous pouvez également implémenter un finaliseur qui sera exécuté lors de sa a
suppression. Mais il semble que ce n'est pas ce que vous vouliez.