2017-02-23 21 views
0

我可能會忽略某些事情,很明顯我是。我正在使用int類型的未初始化變量(carRequired)。我正在IF語句中使用這個變量(下面的代碼)。但是,我收到一條警告,聲明變量從未使用過。是的,我知道不是嵌入sql的好習慣,但現在我被告知要這樣做。分配的值不被使用

public bool UpdateDiscrepancyReport() 
    { 
     var errorStatus = false; 
     int carRequired ; 
     carRequired = cbxCarRequired.Checked == false ? 0 : 1; 
     var updateQuery = "my query string ";       
     dbf.OpenConnection(updateQuery); 
     bool updateStatus = dbf.OpenConnection(updateQuery); 
     if (updateStatus) 
     { 
      errorStatus = true; 
     } 
     else 
     { 
     MessageBox.Show(@"Error in updating DR" + [email protected]" ",@"Update Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
     return errorStatus; 
    } 
+6

不,它從不使用。它被分配給了,但那個分配是無用的。在分配三元表達式的結果之後,您不要使用該變量,因此您可以將這兩行完全刪除,而不會影響代碼的功能。 (您可以刪除'errorstatus'的聲明並簡單地'return false;',因爲在初始聲明和賦值之後,您不會影響errorstatus的值。) –

+0

如果您不期望任何*副作用*從'cbxCarRequired.Checked'方法等於'public bool UpdateDiscrepancyReport(){dbf.OpenConnection(updateQuery);返回false; }' –

回答

1

該變量從未使用。它是分配給,但該變量後從未使用該變量;在將三元操作的結果賦予它之後,您不會執行任何操作。實際上,變量並不是必需的,errorStatus(在您發佈的原始代碼中)也不是必需的,因爲您從不在代碼中執行任何操作,這些代碼在初始化後將更改其值。

您已經發布(您編輯添加幾個行之前)的代碼是

public bool UpdateDiscrepancyReport() 
    { 
     dbf.OpenConnection(updateQuery); 
     return false; 
    } 

完全等效於編譯器會提醒您的變量聲明和分配carRequired是沒有意義的,因爲它不會影響代碼中的任何內容。確定複選框是否被選中只有在你的代碼基於該信息做了不同的處理時纔有意義,並且根據寫入的值使用carRequired不做任何事情;因此,賦值(和變量聲明)是無用的。

+0

我試圖保持代碼簡短,不讓人們通過它的幾行。但是,我想這並不總是一個好主意。儘管我不認爲它會太多地改變答案,但我會修改初始文章以反映該代碼塊中的所有代碼。 – TAdams79

+0

這不會改變'carRequired'未被使用的問題。 :-) –

+0

也許我今天不瞭解的東西,我還在學習。 「這不會改變車輛不需要使用的問題」的含義是什麼?我需要看看複選框是否被選中,如果它是我需要分配值1或0,如果它沒有選中。也許我回答了我自己的問題。使用三元操作,我已經分配一個1或0分別取決於複選框是否被選中。所以,沒有必要爲它創建一個變量。 – TAdams79