2014-05-08 41 views
1

我有这样的代码:如何重新编写冗余分配?

If SalaryCbx.Checked = True Then 
     fundSalary = "S" <- Throws an error 
    Else 
     fundSalary = "N" <- Throws an error 
    End If 

SonarQube抛出一个 “临界” 错误:

分配不使用 (等级:在代码冗余配置) ReSharper的-vbnet RedundantAssignment分配 值不用于在任何执行路径中

有没有更好的方法来编写这种逻辑? 我尝试了Select Case声明,但它也抛出了错误。

我也使用这个相同的代码,除了不同的变量/复选框,它工作正常 - 没有错误。

更新:这里是我使用它的地方。

Dim insertQry As String = "INSERT INTO FUND (FUND_ID, FUND_NM, FUND_TICKER_NM, FUND_SALARY_IND, FUND_BONUS_IND, FUND_ALCTN_IND, BEG_DT, END_DT) " 
    insertQry &= "   VALUES(@FundID, @fndName, @fndTicker, @fndSalary, @fndBonus, @fndAllocation, @fndBeg, @fndEnd) " 

    'Code omitted 

     'Declare Connection String 
     Using sqlConnection As New SqlConnection(myConn) 
      'Declare variable for SQL command 
      Using cmd As New SqlCommand(insertQry) 
       With cmd 
        .Connection = sqlConnection 
        .CommandType = CommandType.Text 
        .Parameters.AddWithValue("@FundID", id) 
        .Parameters.AddWithValue("@fndName", fundName) 
        .Parameters.AddWithValue("@fndTicker", fundTicker) 
        .Parameters.AddWithValue("@fndSalary", fundSalary) 
+0

该消息是说您没有读取代码的任何其他部分中指定的值。如果目前不需要此代码,则可以将其消除。也有可能你做了类似复制粘贴的错误,并且在你打算阅读这个错误时意外地读了一个不同的变量。 –

+0

感谢评论@AndrewMedico。看我的编辑。 –

+0

检查并确保它们实际上是相同的变量(例如,您没有本地遮蔽会员或类似物)。这也可能只是一个误报。 –

回答

2

该消息是说您没有读取代码的任何其他部分中指定的值。可能的原因:

  • 您犯了一个错误(如复制粘贴错误),并且意外地读取了您想要阅读本文的其他变量。

  • 阅读代码已将带有相同名称的变量的写入变量映射到较窄范围内。

  • 不再需要存在的旧代码,因为没有任何内容需要读取变量。

  • 检查器中的误报。