Essentiellement, j'ai un objet DataTableReader
et j'examinais mon code pour m'assurer que tout ce qui était jetable était effectivement éliminé.Pourquoi IntelliSense n'offre pas Dispose sur DataTableReader?
DataTableReader
implémente IDisposable
, mais IntelliSense ne semble pas être la cueillette sur le sujet:
Il ne fonctionne cependant avec d'autres classes à usage unique, comme FileStream
:
Alors, qu'est-ce qui donne? DataTableReader
IS jetable, non?
Il est volontairement caché. Il hérite de Dispose() de sa classe de base, DbDataReader. La plupart des classes qui en dérivent ont quelque chose à disposer, comme SqlDataReader, car il y a une connexion dbase réelle impliquée. Mais DataTableReader ne le fait pas, DataTable est toute la mémoire. –
@HansPassant Alors la suppression de DataTableReader est inutile? – MPelletier
Ça ne fait rien. Beaucoup de programmeurs n'ont jamais sciemment appelé Dispose(), mais nous avons tendance à les entendre à SO. Beaucoup de programmeurs préfèrent toujours appeler Dispose() parce qu'ils ne savent pas ce qu'il fait et ils ont été mordus avant. Certains programmeurs évitent d'écrire du code inutile. Restez en dehors du premier groupe et vous n'aurez jamais à être désolé. –