2017-06-26 1 views
0

Im Wesentlichen habe ich ein DataTableReader Objekt und ich überprüfte meinen Code, um sicherzustellen, dass alles Einweg tatsächlich entsorgt wurde.Warum bietet IntelliSense Dispose für DataTableReader nicht an?

DataTableReader implementiert IDisposable, aber IntelliSense scheint nicht darauf Abholung werden:

enter image description here

Es ist jedoch mit anderen Einweg-Klassen funktioniert, wie FileStream:

enter image description here

Also, was gibt es? DataTableReaderIS Einweg, richtig?

+1

Es absichtlich versteckt. Er erbt Dispose() von seiner Basisklasse DbDataReader. Die meisten Klassen, die davon abgeleitet sind, müssen etwas wie SqlDataReader haben, da es eine tatsächliche dbase-Verbindung gibt. Aber DataTableReader nicht, DataTable ist der gesamte Speicher. –

+0

@HansPassant So ist die Entsorgung von DataTableReader sinnlos? – MPelletier

+1

Es tut nichts. Viele Programmierer haben nie wissentlich Dispose() genannt, aber wir neigen dazu, irgendwann bei SO von ihnen zu hören. Viele Programmierer bevorzugen immer den Aufruf von Dispose(), weil sie nicht wissen, was sie macht und dass sie vorher gebissen wurden. Einige Programmierer vermeiden es sinnlosen Code zu schreiben. Bleib einfach aus der ersten Gruppe und du wirst dich nie entschuldigen müssen. –

Antwort

0

DotPeek zeigt dies für DbDataReader, die übergeordnete Klasse von Datatablereader:

[EditorBrowsable(EditorBrowsableState.Never)] 
public void Dispose() 

Also, warum ...

Verwandte Themen