Après avoir lu beaucoup d'articles d'Idisposable, je me suis trompé sur son utilisation. Tous les articles expliquent ce que c'est et comment l'implémenter. Je veux comprendre ce qui nous manquera si nous ne l'avons pas. Il s'agit d'une interface avec une méthode Dispose() en elle. Prenons un exemple Il est souvent indiqué que l'utilisation de disposer dispose d'une connexion de base de données .Écrire notre propre méthode Dispose au lieu d'utiliser Idisposable
Le code serait comme
Public class Test:Idisposable
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Dispose()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
Bien que Éliminez est mis en oeuvre mais à l'intérieur méthode Éliminez la propriété Éliminez DatabaseConnection est utilisé pour libérer la connexion (this.databaseConnection.Dispose();)
Ma question est pourquoi avons-nous besoin d'implémenter IDisposable dans ce cas? Nous pouvons directement appeler this.databaseConnection.Dispose() et libérer la connexion. Pourquoi implémenter dispose quand il appelle en interne la propriété de disposition de l'objet. Alternative à l'approche de Idisposable nous pouvons implémenter une méthode Libérer pour libérer la mémoire.
Public Class Test
{
public Test()
{
DatabaseConnection databaseConnection = new DatabaseConnection();
}
public void Release()
{
if (this.databaseConnection != null)
{
this.databaseConnection.Dispose();
this.databaseConnection = null;
}
}
}
Quelle est la différence entre les deux approches? Avons-nous vraiment besoin d'Idisposable? J'attends avec impatience une explication concrète.
Le code est tout à fait faux, il doit être un membre privé de la classe, et non pas une variable locale du constructeur. –