Utilisation d'IDisposable pour la gestion de l'état
En C, un modèle courant implique l'utilisation du constructeur et du destructeur de classe A pour gérer les conditions d'entrée et de sortie pour la classe B, assurer un état connu à la sortie du champ d'application. Il ne s'agit pas de pur RAII, mais d'une pratique établie.
En C#, une approche similaire peut être utilisée avec using et IDisposable. Cependant, cet usage soulève une question :
Question : Est-il abusif d'utiliser using et IDisposable comme moyen d'obtenir un « comportement limité » pour la sécurité des exceptions ?
Réponse :
Certains avis considèrent cet usage de using et IDisposable comme un abus. Voici les raisons :
Par exemple, considérons ce qui suit code :
{ // Unlock the frobble this.Frobble.Unlock(); try { // May throw Foo(); this.Frobble.Fiddle(); Bar(); } finally { // Lock the frobble this.Frobble.Lock(); } }
Ce code est vulnérable au problème selon lequel une exception levée après le déverrouillage mais avant d'entrer dans le bloc try laissera le frobble déverrouillé. Utiliser using pour gérer ce changement d'état rendrait cette vulnérabilité plus difficile à détecter.
Par conséquent, il est généralement recommandé d'utiliser using pour son objectif prévu de gestion des ressources et d'éviter de l'utiliser pour la gestion d'état.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!