Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

TQ – Finaliseur – GC

Thèmes des Questions – C# (C Sharp)



finalize Le CLR utilise un système de libération des ressources allouées : le garbage collector. Appelé aussi ramasse-miettes, le garbage collector libère les ressources d’un objet lorsque le code d’exécution de l’application ne peut plus atteindre cet objet.

Les méthodes finaliseurs constituent le mécanisme de C# permettant d’effectuer des opérations de nettoyage lors d’une garbage collection.Une méthode finaliseur est exécutée automatiquement par le CLR lorsqu’un objet est libéré et peut donc être utilisée par le développeur afin de libérer par exemple des ressources non gérées par le CLR (fermeture de fichier, fermeture de connexion,…).

Dans le programme ci-contre :

1°) Complétez les en-têtes du finaliseur de chacune des 2 classes classeA et classeB (la classeC n’a pas de finaliseur)
2°) Lancer l’exécution du garbage collector dans la méthode main.
3°) Expliquez l’affichage obtenu après acion du garbage collector :

constructeur : objet de classeA
constructeur : objet de classeB
constructeur : objet de classeA 
constructeur : objet de classeC
finalizeur de classeB pour objet de classeB
finalizeur de classeA pour objet de classeB
finalizeur de classeA pour objet de classeC
using System;
 class classeA
 {
 public string info;
 public classeA( )
 {
 info="objet de classeA";
 Console.WriteLine("constructeur : "+info);
 }
 // finaliseur de la classeA
 {
 Console.WriteLine("finalizeur de classeA pour "+info);
 }
 }
 class classeB : classeA
 {
 public classeB( )
 {
 info="objet de classeB";
 Console.WriteLine("constructeur : "+info);
 }
 // finaliseur de la classeB
 {
 Console.WriteLine("finalizeur de classeB pour "+info);
 }
 }
 class classeC : classeA
 {
 public classeC( )
 {
 info="objet de classeC";
 Console.WriteLine("constructeur : "+info);
 } 
 } // pas de finaliseur pour la classeC
 class Exercice
 {
 public static void Main( ) 
 {   
 classeB x = new classeB( );
 classeC y = new classeC( );
 x=null;
 y=null;
 //….forcer le garbage collector à fonctionner
 Console.ReadLine();
 }
 }

Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More