Disons que j'ai une classe avec un champ objet. Lorsque Dispose() est appelé, je souhaite effacer la référence à cet objet. Le champ privé ne peut être défini qu'une seule fois, donc idéalement je voudrais qu'il soit en lecture seule, mais s'il est en lecture seule, il y a une erreur de compilation lorsque j'essaie de libérer la référence à l'objet pendant Dispose(). Idéalement, j'aimerais disposer d'un coffre-fort ET marquer le champ _value comme étant en lecture seule. Est-ce possible ou même nécessaire?Puis-je nettoyer en toute sécurité après un champ d'objet en lecture seule?
public class Foo : IDisposable
{
public Foo(object value)
{
_value = value;
}
public object Value { get { return _value; } }
private readonly object _value;
public void Dispose()
{
//Cleanup here
_value = null // causes compile time error
}
}
Dans cet exemple, vous abusez d'IDisposable. IDisposable sont destinés à nettoyer la ressource native pour un nettoyage déterministe. – crypted