我有这个代码,我在我的应用程序中使用它来将数据保存回数据库。
public bool SaveDemo()
{
bool success = false;
try
{
using (DataTable dt = DataAccess.ExecuteDataTable("[dbo].[udp_Customers_ups]",
DataAccess.Parameter(CustomerIdColumn, CustomerId),
DataAccess.Parameter(CodeColumn, Code),
DataAccess.Parameter(CompanyColumn, Company),
DataAccess.Parameter(IsDeletedColumn, IsDeleted),
DataAccess.Parameter(LastUpdatedColumn, LastUpdated),
DataAccess.Parameter(UpdatedByColumn, UpdatedBy)))
success = true;
}
catch
{
success = false;
}
return success;
}
代码按原样运行,我的意思是它将数据保存回数据库。然而,CodeRush抱怨dt是一个未使用的声明。而且由于使用dt(我认为)使用dt,我认为警告是误报。所以我想知道CodeRush是错还是错了?
答案 0 :(得分:2)
CR试图说的是:
using (DataTable dt = DataAccess.ExecuteDataTable ...
你不是使用 dt
的声明;变量保持不变。
重构按钮会将其转换为
using ( DataAccess.ExecuteDataTable ...
即。它仍然是using
声明,但你没有变量来引用它。
当你这样做时,你可以进行一些内联结果转换,产生:
try
{
using (DataAccess.ExecuteDataTable("[dbo].[udp_Customers_ups]",
DataAccess.Parameter(CustomerIdColumn, CustomerId),
DataAccess.Parameter(CodeColumn, Code),
DataAccess.Parameter(CompanyColumn, Company),
DataAccess.Parameter(IsDeletedColumn, IsDeleted),
DataAccess.Parameter(LastUpdatedColumn, LastUpdated),
DataAccess.Parameter(UpdatedByColumn, UpdatedBy)))
return true;
}
catch
{
return false;
}
我会让其他人质疑在catch
块中包装这样的调用是否是一个好主意...