Implizite VBScript-Konvertierung in einer IF-Anweisung, die sich von der Variablen in Literale unterscheidet?
Derzeit tritt ein Problem auf, das auf die implizite Konvertierung in einer IF-Anweisung in VBScript (Classic ASP) zurückzuführen ist, bei der die implizite Konvertierung beim Umgang mit einer Variablen oder einem Literal nicht auf die gleiche Weise erfolgt. Kann mir jemand dieses Verhalten erklären, warum verhält sich VBScript so?
Hier ist ein Beispiel dessen, was ich meine:
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
Welche Ausgänge:
Lange Variable = Zeichenfolgenvariable: Nicht gleich
Lange Konstante = Zeichenfolgenvariable: Nicht gleich
Lange Konstante = Lange Variable: Gleich
Lange Variable = String-Literal: Gleich
Lange Konstante = String-Literal: Gleich
Welches ist ziemlich verwirrend o_O