Comparing strings in a loop using Is Operator

Moh*_*far 2 vb.net

Is Operator works fine when comparing two strings like:

Dim str1 As String = "TagnameX"
Dim str2 As String = "TagnameX"

Dim strChk as boolean = str1 Is str2
'strChk returns True

Run Code Online (Sandbox Code Playgroud)

But when one of the strings is extracted by Substring it returns false ! as below:

Dim str1 As String = "t#1TagnameX"
Dim str1Extract As String = str1.Substring(3, 8)
Dim strArr() = {"Tagname1", "Tagname2", "TagnameX"}  

 For i = 0 To strArr.Length - 1
      If strArr(i) Is str1Extract Then
         MsgBox("TagnameX found!")
      else
         MsgBox("TagnameX was not found!")
      End If
 Next
'TagnameX was not found!
Run Code Online (Sandbox Code Playgroud)

so am i using it wrong in some how? thanks for your help! :)

pmc*_*ane 6

是运营商是否返回两个引用是相等的:那就是,两个变量是否指向同一个内存位置。

第一个代码片段返回,True因为对于文字字符串,.NET实习生会重复而不是在内存中保留单独的相同副本,因此str1str2引用内存中的相同字符串。

第二个代码片段返回False是因为 .NET 不一定需要实习中间字符串,例如 .NET 返回的字符串Substring。所以变量strstrExtract不引用同一个字符串。

您应该使用等于运算符=来比较两个字符串的值。