2012-06-06 45 views
1

本方法返回false仅在任何问题(无论其类型如何)的情况下。我想知道的意愿将using声明打破了逻辑,如果异常来自USING语句的返回值

它是确定从using语句以这种方式返回值:

try 
    { 

     Measurements.DeleteAllMeasurements(ID); 
     string query = "DELETE FROM `Narz` WHERE `NAZk_1_ID`[email protected]_ID"; 
     using(OleDbConnection strukturaConnection = new OleDbConnection(CommonConnectionString + DbPath + strStructureMdb)) 
      { 
       using (OleDbCommand command = new OleDbCommand(query, strukturaConnection);) 
        { 

         command.Parameters.Add("@NAZ_ID", OleDbType.Numeric, 50); 
         command.Parameters["@NAZ_ID"].Value = ID; 
         command.ExecuteNonQuery(); 
         return true; 
        } 
      } 
    } 
    catch (Exception ex) 
    { 
     Logger.LogError(ex); 
     return false; 
    } 

或者我应该返回另一个办法?

+0

**使用**不会以任何方式破坏您的代码。 –

回答

5

所有使用语句都会隐含地在代码块的末尾调用实例的实现IDisposable.Dispose()

除非您正在返回参考文献,并且方法恰巧操纵它,否则这两个问题完全不相关。

简而言之,使用语句中返回的值无关紧要。

编辑:关于你的方法“应该返回”:我们没有足够的信息来知道这一点。我们甚至不知道该方法的名称是什么。我们不知道应用该方法的其他对象或方面。返回值应该对调用者有意义,并有效地传达操作结果。

0

那将是很好 - 所有做的是调用了IDisposable对象的Dispose方法using语句括号

1

而是创建一个bool值时,方法创建。尝试将其值设置为true,并在catch中将其值设置为false。外部捕获返回该变量值。

使用将不会对您的代码或我的影响。它只是隐含地调用IDisposable.Dispose()