2009-09-04 6 views
7

Я новичок в классическом asp, весь мой опыт в C# .net и ColdFusion и php.classic asp cint

Во всяком случае, этот сайт я работаю имеет этот код повсюду

If (CInt("0" & myVar) > 0) Then 
    myNewCar = CInt("0" & myVar) 
End If 

То, что я не понимаю, почему «0» будет добавить к вар в CInt() ввода ? Я что-то пропустил? Это какая-то вещь безопасности? Это эффективно?

На боковой ноте рекомендуется использовать любые классические книги в формате asp?

+0

здесь немного удовольствия. Добавить sub can not ( –

+0

Добавить sub cint (Val) cint = clng (Val) end sub. Извините за предыдущий пост –

ответ

11

Его старый хак для обработки нулевых значений. Вызов CInt на null приведет к ошибке. Однако конкатенация строки с нулевым результатом приводит к строке, поэтому «0» & null возвращает «0». Это предотвращает ошибку CInt при значении null.

2

myVar может быть ничем, объектом, пустой строкой или нечисловой. Предварительно ожидаемые «0» гарантии вы получите действительное целое число вне независимо от того, что.

+1

CInt (Empty) возвращает 0. Попытка конкатцировать «0» с объектом, который не имеет значения по умолчанию свойство приведет к ошибке. – AnthonyWJones

0

Мой классический ASP немного ржавый, но я считаю, что это вещь безопасности. Например, если myVar не был определен и он попытался сделать CInt, это вызовет ошибку.

+1

С опцией явным образом код не будет компилироваться, без Option Explict неопределенная переменная динамически определена и задана значение empty. Пустые значения будут CInt равным 0. – AnthonyWJones

0

Если вы указали нулевое значение, вы получите сообщение об ошибке. Это не относится к Cstr

Предполагая, что проверка myVar> 0 в основном является нулевой проверкой.

myVar=cstr(myVar) 
If (not length(myVar) = 0) Then 
    myNewCar = cint(myVar) 
End If 

Так myNewCar будет либо «», либо значение, и вы никогда не получите ошибку