2012-02-21 5 views
15

Я только что получил кучу устаревшего кода VB6 (!), Брошенного на меня, и я продолжаю видеть функции, объявленные амперсандом в конце имени, например, Private Declare Function ShellExecute& . . ..Значение амперсанда в имени функции VB6?

Мне не удалось найти ответ на важность этого, и я не смог обнаружить какой-либо шаблон в использовании или подпись функций, которые были названы таким образом.

Кто-нибудь знает, означают ли эти конечные амперсанды что-либо для компилятора или, по крайней мере, если есть какое-то соглашение, которое мне не хватает? До сих пор я пишу это как странный программист, но я хотел бы точно знать, есть ли смысл в этом.

ответ

20

Это означает, что функция возвращает значение длинного (то есть 32-разрядного целого).

Это эквивалентно

Declare Function ShellExecute(...) As Long 

Полный список суффиксов выглядит следующим образом:

Integer % 
Long & 
Single ! 
Double # 
Currency @ 
String $ 
12

Как Филипп Sheard сказал это тип Indentifier для Long. Они по-прежнему присутствует в .Net, увидеть это MSDN link и это VB6 article

Со второй статье:

правил формирования действительного VB имя переменной следующим образом:

(1) первый символ должен быть буквой от A до Z (могут использоваться прописные или строчные буквы). Существенными символами могут быть буквы, цифры или символ подчеркивания (_) (пробелы или другие символы не разрешены).

(2) Конечный символ может быть «символом декларации типа». Только некоторые типы переменных могут использовать их, как показано ниже:

Data Type Type Declaration Character 

String   $ 
Integer  % 
Long   & 
Single   ! 
Double   # 
Currency  @  

Использование объявления типа символов в VB не поощряется; современный стиль заключается в использовании предложения «As» в заявлении о декларации данных.