2017-06-26 52 views
0

本質上,我有一個DataTableReader的對象,我正在審查我的代碼,以確保一次性處理的東西確實處置完畢。爲什麼IntelliSense不在DataTableReader上提供Dispose?

DataTableReader實現IDisposable,但智能感知似乎並不在它被拾起:

enter image description here

但它確實與其他一次性類工作,如FileStream

enter image description here

那麼,什麼給? DataTableReaderIS一次性的,對吧?

+1

它有意隱藏。它從它的基類DbDataReader繼承Dispose()。大多數從它派生出來的類確實有一些東西需要處理,比如SqlDataReader,因爲它包含一個實際的dbase連接。但是DataTableReader不會,DataTable是全部內存。 –

+0

@HansPassant所以DataTableReader的處理是毫無意義的? – MPelletier

+1

它什麼也沒做。很多程序員從來都不知道叫做Dispose(),但我們最終傾向於在S​​O上聽到他們的聲音。很多程序員更喜歡總是調用Dispose(),因爲他們不知道它做了什麼並且之前被咬了。一些程序員避免寫無意義的代碼。只要不參加第一組,你就永遠不會感到抱歉。 –

回答

0

DotPeek揭示本作DbDataReader,父類DataTableReader的:

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

所以這就是爲什麼......

相關問題