String.compare在字符串不相等时返回true?

时间:2015-06-18 04:20:51

标签: vb.net

我在这里看到很多关于字符串的问题,这些字符串在不平等的情况下返回,但请相信我不会遇到这个问题。

我有这个功能。

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

它应该比较两个字符串并增加一个有效数字整数,如果它们相等,然后告诉你它是否到达转发器的末尾而没有找到任何匹配。

此测试中的变量是LT00004(Voucher.ValidStockCode)和SP08076(ProductID.ToString())

我已经多次运行代码,输出不同的字符串作为结果并且可以确认它们应该是什么,但是当我尝试比较它们(我希望validCount为0)时,它们返回匹配

我做了什么来解决这个问题?

1 个答案:

答案 0 :(得分:4)

您可能想要Uzbek (LATN): Expected localized dollar string [$ 1] to contain currency symbol: [US$] Uzbek (Uzbekistan,UZ): Expected localized dollar string [$ 1] to contain currency symbol: [US$] 而不是String.Equals()String.Compare()用于命令事物而不是测试是否相等。发生了什么Compare返回一个非零数字,以满足条件。原因是因为在VB中“0”为假,但任何非零数字的计算结果为真。事情背后有一个完整的历史,但我离题了。