Vb.net 字符串不为';不平等?

Vb.net 字符串不为';不平等?,vb.net,Vb.net,我在这里看到了很多关于相等字符串返回为不相等字符串的问题,但是请相信我,不要遇到这个问题 我有这个功能 Protected Sub ChkValidStockCode() If Not (Voucher.ValidStockCode = "") Then Dim validcount As Int32 = 0 Dim validproduct As String = Product.GetProductNameByCode(Voucher.ValidSto

我在这里看到了很多关于相等字符串返回为不相等字符串的问题,但是请相信我,不要遇到这个问题

我有这个功能

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(凭证.ValidStockCode)和SP08076(ProductID.ToString())

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


我是怎么搞砸的?

你可能想要
String.Equals()
而不是
String.Compare()
<代码>比较用于排序,而不是测试是否相等。正在发生的是
String。Compare
返回一个非零数字,以便满足条件。这是因为在VB中“0”为False,但任何非零数的计算结果都为true。这种情况背后有一段完整的历史,但我离题了。

你可能想要
String.Equals()
,而不是
String.Compare()
<代码>比较用于排序,而不是测试是否相等。正在发生的是
String。Compare
返回一个非零数字,以便满足条件。这是因为在VB中“0”为False,但任何非零数的计算结果都为true。这种情况背后有一段完整的历史,但我离题了。

@ChrisHinton-打开
选项Strict
,您会立即看到错误。@ChrisHinton-打开
选项Strict
,您会立即看到错误。