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

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

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

    !RelativePath.Value = mstrRelativePath

Что делает ! средний?

26
задан Deanna 3 May 2012 в 13:51
поделиться

2 ответа

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

  With blah
    !RelativePath.Value = mstrRelativePath
  End With 

which is syntax sugar for

  blah("RelativePath").Value = mstrRelativePath

which is syntax sugar for

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

where "DefaultProperty" is a property with dispid zero that's indexed by a string. Как свойство Fields объекта ADO Recordset.

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

46
ответ дан 28 November 2019 в 07:00
поделиться

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

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

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


Я беру это обратно. Это:

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

7
ответ дан 28 November 2019 в 07:00
поделиться