Domanda

Se implemento un oggetto con IDisposable, dovrebbero tutti gli oggetti che possiedono quell'oggetto attuarlo e, anche se non hanno altre risorse per rilasciare?

È stato utile?

Soluzione

Sì. È necessario disporre di loro, in modo da avere le variabili membro vengono smaltiti correttamente.

Ogni volta che si incapsulare una classe IDisposable, si dovrebbe fare il vostro IDisposable classe. Nel vostro metodo Dispose, si dovrebbe disporre le risorse incapsulati. In sostanza, trattarli allo stesso modo si farebbe curare una risorsa nativa.

Altri suggerimenti

Se si vuole lo smaltimento deterministica, in ultima analisi, qualche cliente ha la necessità di chiamare Dispose o avvolgere le chiamate in un blocco "tramite". Per trickle down al vostro oggetto, che potrebbero richiedere che il proprietario implementare IDisposable pure.

Non si dovrebbe fare affidamento sul garbage collector per liberare tutte le risorse dipendenti dal tempo.

Sì, una classe possidente dovrebbe implementare IDisposable, ma non ha bisogno (non dovrebbe avere) un finalizzatore (distruttore).

NOP, hanno solo bisogno di utilizzare tale classe con una dichiarazione "utilizzando" per assicurarsi che essi dispongono quell'oggetto correttamente, ma gli oggetti stessi non hanno bisogno di implementare IDisplosable

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top