¿Conversión implícita de VBScript en la instrucción IF diferente de variable a literales?
Actualmente tenemos un problema debido a la conversión implícita en una declaración IF en VBScript (ASP clásico) que no realiza la conversión implícita de la misma manera cuando se trata de una variable o un literal. ¿Alguien puede explicarme este comportamiento? ¿Por qué VBScript actúa de esta manera?
Aquí hay una muestra de lo que quiero decir:
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
Qué resultados:
Variable larga = variable de cadena: no igual
Constante larga = variable de cadena: no igual
Constante larga = variable larga: igual
Variable larga = Cadena literal: igual
Constante larga = literal de cadena: igual
Lo cual es bastante confuso o_O