2012-06-06 80 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()