Что делает помещение восклицательного знака (!) Перед переменной объекта? - PullRequest
26 голосов
/ 02 марта 2010

Что делает помещение восклицательного знака (!) перед ссылочной переменной объекта в Visual Basic 6.0?

Например, я вижу следующее в коде:

    !RelativePath.Value = mstrRelativePath

Что означает !?

Ответы [ 2 ]

45 голосов
/ 02 марта 2010

Это почти наверняка утверждение внутри блока With:

  With blah
    !RelativePath.Value = mstrRelativePath
  End With 

что является синтаксическим сахаром для

  blah("RelativePath").Value = mstrRelativePath

что является синтаксическим сахаром для

  blah.DefaultProperty("RelativePath").Value = mstrRelativePath

где "DefaultProperty" - это свойство с показанным нулем, которое индексируется строкой. Как и свойство Fields объекта ADO Recordset.

С сахаром в некоторой степени неизбежно то, что он вызывает разрушение зубов. По этой причине вы должны использовать ключевое слово Set в VB6 и VBA. Потому что без этого компилятор не знает, хотите ли вы скопировать ссылку на объект или значение свойства объекта по умолчанию. Исключен в vb.net.

7 голосов
/ 02 марта 2010

Восклицательный знак действует как оператор доступа члена, кажется ...

Операторы членского доступа

Для доступа к члену типа вы используете точка (.) или восклицательный знак (!) оператор


Я забираю это обратно. Вот это:

Оператор восклицательного знака (!) Используйте ! оператор только в классе или интерфейс как доступ к словарю оператор. Класс или интерфейс должны иметь свойство по умолчанию, которое принимает один строковый аргумент. Идентификатор сразу после! оператор становится строковым аргументом свойство по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...