Comment nettoyer les ressources non gérées en C # [duplicate]

Jan 20 2021

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 hereje veux que l' aobjet soit détruit ou éliminé et libérant sa mémoire allouée.

Réponses

1 ispiro Jan 20 2021 at 03:55

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 adans votre exemple, et libère l'espace qu'elles ont utilisé. Il verra alors que les internes de asont é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, Disposeil est préférable d'appeler Disposeexplicitement ou d'utiliser des usingblocs pour y parvenir. Vous pouvez également implémenter un finaliseur qui sera exécuté lors de sa asuppression. Mais il semble que ce n'est pas ce que vous vouliez.