C# 在DataTable中使用语句
在我下面的函数中…我想返回DataTable 我应该转换下一行吗C# 在DataTable中使用语句,c#,asp.net,c#-4.0,using,C#,Asp.net,C# 4.0,Using,在我下面的函数中…我想返回DataTable 我应该转换下一行吗 DataTable=CreateTable() 追随 using(DataTable table = CreateTable<T>()) { } 使用(DataTable=CreateTable()) { } 作用 公共静态数据表转换器(IList列表) { DataTable=CreateTable(); int iColCount=table.Columns.Count; 对于(int j=0;j
DataTable=CreateTable()代码>
追随
using(DataTable table = CreateTable<T>())
{
}
使用(DataTable=CreateTable())
{
}
作用
公共静态数据表转换器(IList列表)
{
DataTable=CreateTable();
int iColCount=table.Columns.Count;
对于(int j=0;j
using语句确保调用Dispose,即使在对对象调用方法时发生异常。如果你想使用使用问这个问题“这个对象是一次性的吗?”。如果是,则使用是最佳选择。
你可能想多看看这方面的内容
你为什么要这样做
using (obj)
{
// Do something
}
基本上与:
try
{
// Do something
}
finally
{
obj.Dispose();
}
关键是一旦不再需要对象,就释放对象使用的资源。在本例中,您将数据表返回给调用函数,因此仍然需要它。因此,没有理由使用
语句将函数封装在语句中。您不需要使用insideConvertTo(IList列表)
,但是ConvertTo(IList列表)
的调用方负责处理该数据表
using (var table = Test.ConvertTo(testList))
{
// do stuff with DataTable
}
编辑:另一方面,有一篇文章指出,在DataTable中,即使实现了IDisposable,也没有什么可处理的:注意:
using语句调用对象上的Dispose方法,并在调用Dispose时使对象本身超出范围
和Dispose
释放DataTable
使用的所有资源
这样您就不能同时使用和返回DataTable
对象
public static DataTable ConvertTo<T>(IList<T> list)
{
DataTable resultTable = CreateTable<T>();
using(DataTable table = CreateTable<T>())
{
....
resultTable = table;
}
// 'table' object disposed already
return resultTable ;
}
公共静态数据表转换器(IList列表)
{
DataTable resultTable=CreateTable();
使用(DataTable=CreateTable())
{
....
结果=表格;
}
//“表”对象已被释放
返回结果;
}
返回已处理的对象有意义吗?我也想返回该对象。它应该是在处理之前还是处理之后返回?我想说的是:您不应该返回已处理的对象。所以,如果您要返回它,不要处理它。您的代码将在Finally块中处理。请你详细解释一下好吗?我的代码只是对使用的功能的翻译。我试图解释using
关键字等同于在finally块内调用Dispose
方法。现在,由于要返回对象,因此不能调用Dispose
方法。因此,您也不能使用using
关键字。
public static DataTable ConvertTo<T>(IList<T> list)
{
DataTable resultTable = CreateTable<T>();
using(DataTable table = CreateTable<T>())
{
....
resultTable = table;
}
// 'table' object disposed already
return resultTable ;
}