【发布时间】:2020-09-07 05:44:35
【问题描述】:
我正在尝试对数据表使用 using 语句,以便它在超出范围时处理掉,但在 using 范围内它说不能将数据表分配给 using 变量。下面是代码。 不使用“Using 语句”并使用 DataTable dt = null,一切正常。
using (DataTable dt = new DataTble())
{
using (SqlConnection connection = new SqlConnection("DBConection"))
{
cmd = new SqlCommand("SPNAME", connection);
cmd.CommandType = CommandType.StoredProcedure;
dt = (DataTable)cmd.ExecuteNonquery(); // here it says cannot assign to dt because it is a using variable
}
return dt;
}
【问题讨论】:
-
DataTable甚至实现IDisposable吗? -
是的,
DataTable确实实现了IDisposable->DataTable : MarshalByValueComponent&MarshalByValueComponent : IDisposable。 -
你不能返回
DataTable,因为它会在返回给调用代码之前被释放。 -
@Enigmativity 我已得到纠正。 IIRC 曾经有一段时间记录了通过继承实现的接口,这就是为什么我首先犯了这个错误。
标签: c# asp.net datatable using