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
,您会立即看到错误。