Неявное преобразование VBScript в операторе IF отличается от переменной к литералу?
В настоящее время у нас есть проблема из-за неявного преобразования в операторе IF в VBScript (Classic ASP), которое не выполняет неявное преобразование таким же образом при работе с переменной или литералом. Может кто-нибудь объяснить мне это поведение, почему VBScript действует таким образом?
Вот пример того, что я имею в виду:
Const c_test = 3
Dim iId : iId = 3
Dim iTestStr : iTestStr = "3"
If iId = iTestStr Then
Response.Write("Long variable = String variable : Equal")
Else
Response.Write("Long variable = String variable : Not Equal")
End If
Response.Write("<br/>")
If c_test = iTestStr Then
Response.Write("Long constant = String variable : Equal")
Else
Response.Write("Long constant = String variable : Not Equal")
End If
Response.Write("<br/>")
If c_test = iId Then
Response.Write("Long constant = Long variable : Equal")
Else
Response.Write("Long constant = Long variable : Not Equal")
End If
Response.Write("<br/>")
If iId = "3" Then
Response.Write("Long variable = String literal : Equal")
Else
Response.Write("Long variable = String literal : Not Equal")
End If
Response.Write("<br/>")
If c_test = "3" Then
Response.Write("Long constant = String literal : Equal")
Else
Response.Write("Long constant = String literal : Not Equal")
End If
Какие выходы:
Длинная переменная = строковая переменная: не равно
Длинная константа = строковая переменная: не равно
Длинная постоянная = Длинная переменная: равно
Длинная переменная = строковый литерал: равно
Длинная константа = строковый литерал: равно
Что довольно запутанно, о_О