【问题标题】:Will the Save() Method ever return a false or is it always going to return true?Save() 方法会返回 false 还是总是返回 true?
【发布时间】:2015-06-09 14:02:00
【问题描述】:

这个问题实际上是对另一个线程的答案的跟进,但与那个原始问题无关,所以我在一个新线程中问它。

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;
    } 

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

【问题讨论】:

  • 如果你将整个 using 包装在一个 try catch 块中,那么 catch 将执行并且成功仍然是错误的 - 我不确定这是否是你要找的?

标签: c# using-statement


【解决方案1】:

这个方法总是会返回true,否则会抛出异常,因为语句

     return success;

总是在

之前(“支配”)
        success = true;

我怀疑 using 语句不是您在此处寻找的。 using 确保在传递给 using 语句的对象上调用 dispose 方法。循环内的代码无论如何都会执行。有关 using 语句的更多信息,请参阅https://msdn.microsoft.com/en-us/library/yh598w02.aspx

【讨论】:

    【解决方案2】:

    你的代码相当于

        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 的分配没有使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多