C# 数据表内部使用?
我已经在使用块内部声明了datatable,该块在作用域的末尾调用Dispose方法C# 数据表内部使用?,c#,datatable,dispose,C#,Datatable,Dispose,我已经在使用块内部声明了datatable,该块在作用域的末尾调用Dispose方法 using (DataTable dt = Admin_User_Functions.Admin_KitItems_GetItems()) { ... } 但在reflector中,datatable似乎没有Dispose功能 这是怎么回事?为什么要处理数据表?如果确实希望发生这种情况,则应将其从其数据集中删除。System
using (DataTable dt = Admin_User_Functions.Admin_KitItems_GetItems())
{
...
}
但在reflector中,datatable似乎没有Dispose
功能
这是怎么回事?为什么要处理数据表?如果确实希望发生这种情况,则应将其从其数据集中删除。System.Data.DataTable扩展了
System.ComponentModel.MarshallByValueComponent
,MarshallByValueComponent实现了IDisposable
Reflector不会显示基类型的方法,除非它们在派生类型中被重写。
DataTable
继承自实现IDisposable
接口的MarshallByValueComponent
类(见下文),C允许为派生类的实例调用基类公共方法
public class DataTable : MarshalByValueComponent,
IListSource, ISupportInitializeNotification,
ISupportInitialize, ISerializable, IXmlSerializable
public class MarshalByValueComponent :
IComponent, IDisposable, IServiceProvider
您的代码块将在引擎盖下表示,如下所示,因此它保证将调用Dispose()方法:
{
DataTable dt = Admin_User_Functions.Admin_KitItems_GetItems()
try
{
// .. code inside using statement
}
finally
{
if (dt != null)
((IDisposable)dt).Dispose();
}
}
有关更多详细信息,请参见MSDN:顺便说一句,请查看此反射器显示的方法。您可以切换“继承的成员”(Ctrl+I)以显示或隐藏方法。Reflector>工具>选项>浏览器>选中“显示继承的成员”。@AMissico不知道这一点。谢谢但它只在左边的树上显示,而不是在右边的反汇编程序中显示。@RoyiNamir;对。它这样做是因为类没有实现。如果您在树窗格中“钻取”,它将带您到继承类的反汇编代码。您可以切换“继承的成员”(Ctrl+I)以显示或隐藏方法。