Я видел много вопросов здесь о строках, которые равны, возвращающиеся как неравные, но поверьте мне, чтобы не получить эту проблему.String.compare возвращает true, когда строки не равны?
У меня есть эта функция.
Protected Sub ChkValidStockCode()
If Not (Voucher.ValidStockCode = "") Then
Dim validcount As Int32 = 0
Dim validproduct As String = Product.GetProductNameByCode(Voucher.ValidStockCode)
For Each rpi As RepeaterItem In rptCart.Items
Dim ProductID As HyperLink = CType(rpi.FindControl("hlProductID"), HyperLink)
Dim ProductName As HyperLink = CType(rpi.FindControl("hlProductName"), HyperLink)
If (String.Compare(Voucher.ValidStockCode.ToString(), ProductID.ToString())) Then
validcount = validcount + 1
End If
Next
If validcount = 0 Then
txtVoucher.Text = "Sorry, this voucher is only valid when purchasing a " & validproduct
failed = True
Exit Sub
End If
End If
End Sub
Он должен сравнить две строки и приращение в validcount целого числа, если они равны, а затем сказать вам, если бы он дойдет до конца повторителя, не находя никаких совпадений.
Переменные в этом тесте LT00004 (Voucher.ValidStockCode) и SP08076 (ProductID.ToString())
Я запустить код несколько раз, выводя разные строки в качестве результата и может подтвердить, что они являются то, что они должны быть, но когда я пытаюсь их сравнить (и я ожидаю, что validCount будет равен 0), они возвращаются в качестве соответствия.
Что я сделал, чтобы испортить это?
@ChrisHinton - Включите 'Option Strict', и вы сразу увидели бы ошибку. –