我一直在重写一些旧代码,使得对于我的DataTable,使用using
语句代替记住每次都要Dispose
:
using (DataTable dt = BLL.GetDataTable()) {
foreach(DataRow dr in dt.Rows) {
// iteration logic
}
}
然而,在某些特定情况下,DataTable的内容会因为变量而有所不同,因此我首先创建初始的DataTable,然后再分配值:
DataTable dt = new DataTable();
switch(foo) {
case bar:
dt = BLL.GetDataTable(bar);
break;
default:
dt = BLL.GetDataTable();
break;
}
// iteration logic here
dt.Dispose();
将其改为使用using
后,我有:
using (DataTable dt = new DataTable()) {
switch(foo) {
case bar:
dt = BLL.GetDataTable(bar);
break;
default:
dt = BLL.GetDataTable();
break;
}
// iteration logic here
}
这种做法好吗(即使用 using
语句创建 empty
DataTable)?我不知道为什么,但感觉不太对。
using()
。正如@John所述,您的第三个示例将无法工作。但是,您可以将您的情况分配给一个func<>
并在using()
中使用它。 - Rabbanfunc<>
的例子以便我理解吗? - EvilDr