2015-04-04 147 views
0

这个问题实际上是跟在另一个线程上的答案,但是与该原始问题相关的主题是这样,所以我在新线程中提问。Save()方法是否会返回false或者它总是返回true?

Why does CodeRush warn me of an Unused Declaration in code?

问题可以站在自己这样的链接,原来的问题是只为好奇的参考。

我的问题是这样吗? Save()方法会返回一个false还是总是返回true?

public bool Save() 
    { 
     bool success = false; 

     using (DataAccess.ExecuteDataTable("[dbo].[udp_Customers_ups]", 
      DataAccess.Parameter(CustomerIdColumn, CustomerId), 
      DataAccess.Parameter(CodeColumn, Code), 
      DataAccess.Parameter(CompanyColumn, Company), 
      DataAccess.Parameter(CommentsColumn, Comments), 
      DataAccess.Parameter(ContactColumn, Contact), 
      DataAccess.Parameter(StreetColumn, Street), 
      DataAccess.Parameter(CityColumn, City), 
      DataAccess.Parameter(StateColumn, State), 
      DataAccess.Parameter(ZipcodeColumn, Zipcode), 
      DataAccess.Parameter(PhoneColumn, Phone), 
      DataAccess.Parameter(IsNewColumn, IsNew), 
      DataAccess.Parameter(IsDeletedColumn, IsDeleted), 
      DataAccess.Parameter(LastUpdatedColumn, LastUpdated), 
      DataAccess.Parameter(UpdatedByColumn, UpdatedBy))) 
     { 
      success = true; 
     }  

     return success; 
    } 

我试图强制使用不会工作的情况,但每次我都会得到不同的错误。所以我认为这个方法总是成立的,因为任何会导致它失败的东西都会在数据层出现,并且永远不会返回到这里返回false。

+0

如果你用try catch块封装你的整体,那么catch将执行并且成功仍然是false - 我不确定这是你想要的吗? – NDJ 2015-04-04 18:35:59

回答

2

此方法将总是返回true,否则将抛出一个异常,因为

 success = true; 

声明

 return success; 

总是先(“主导”)我怀疑using语句是不完全是你在这里寻找的。使用确保在传递给using语句的对象上调用dispose方法。无论如何,循环内的代码都会执行。有关使用说明的更多信息,请参见https://msdn.microsoft.com/en-us/library/yh598w02.aspx

0

您的代码就相当于

public bool Save() 
    { 
     using (DataAccess.ExecuteDataTable("[dbo].[udp_Customers_ups]", 
      DataAccess.Parameter(CustomerIdColumn, CustomerId), 
      DataAccess.Parameter(CodeColumn, Code), 
      DataAccess.Parameter(CompanyColumn, Company), 
      DataAccess.Parameter(CommentsColumn, Comments), 
      DataAccess.Parameter(ContactColumn, Contact), 
      DataAccess.Parameter(StreetColumn, Street), 
      DataAccess.Parameter(CityColumn, City), 
      DataAccess.Parameter(StateColumn, State), 
      DataAccess.Parameter(ZipcodeColumn, Zipcode), 
      DataAccess.Parameter(PhoneColumn, Phone), 
      DataAccess.Parameter(IsNewColumn, IsNew), 
      DataAccess.Parameter(IsDeletedColumn, IsDeleted), 
      DataAccess.Parameter(LastUpdatedColumn, LastUpdated), 
      DataAccess.Parameter(UpdatedByColumn, UpdatedBy))) 
     { 
      return true; 
     }  
    } 

这表明falsesuccess分配未使用。