What does putting an exclamation point (!) in fron

2020-05-30 02:48发布

What does putting an exclamation point (!) in front of an object reference variable do in Visual Basic 6.0?

For example, I see the following in code:

    !RelativePath.Value = mstrRelativePath

What does the ! mean?

标签: vb6
2条回答
Bombasti
2楼-- · 2020-05-30 03:30

It is almost certainly a statement inside a With block:

  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. Like the Fields property of an ADO Recordset object.

Somewhat inevitable with sugar is that it produces tooth decay. This is the reason you have to use the Set keyword in VB6 and VBA. Because without it the compiler doesn't know whether you meant to copy the object reference or the object's default property value. Eliminated in vb.net.

查看更多
▲ chillily
3楼-- · 2020-05-30 03:46

The exclamation point is acting as a member access operator it seems...

Member Access Operators

To access a member of a type, you use the dot (.) or exclamation point (!) operator


I take that back. It is this:

Exclamation Point (!) Operator Use the ! operator only on a class or interface as a dictionary access operator. The class or interface must have a default property that accepts a single String argument. The identifier immediately following the ! operator becomes the string argument to the default property.

查看更多
登录 后发表回答