在对象引用变量前加上感叹号(!)会怎么做?

时间:2010-03-02 19:33:29

标签: vb6

在Visual Basic 6.0中将感叹号(!)放在对象引用变量前面会有什么作用?

例如,我在代码中看到以下内容:

    !RelativePath.Value = mstrRelativePath

!是什么意思?

2 个答案:

答案 0 :(得分:45)

几乎可以肯定是在With块中的声明:

  With blah
    !RelativePath.Value = mstrRelativePath
  End With 

的语法糖
  blah("RelativePath").Value = mstrRelativePath

的语法糖
  blah.DefaultProperty("RelativePath").Value = mstrRelativePath

其中“DefaultProperty”是具有由字符串索引的dispid零的属性。与ADO Recordset对象的Fields属性类似。

糖有些不可避免地会产生蛀牙。这就是您必须在VB6和VBA中使用 Set 关键字的原因。因为没有它,编译器不知道您是否要复制对象引用或对象的默认属性值。在vb.net中删除。

答案 1 :(得分:7)

感叹号似乎充当了成员访问操作符......

<击>   

会员访问运营商

     

要访问某个类型的成员,请使用   点(。)或感叹号(!)   操作者   


我把它拿回来。就是这样:

  

感叹号(!)运算符使用   !运算符只在类或   接口作为字典访问   运营商。类或接口必须   有一个接受a的默认属性   单个String参数。标识符   紧接着!操作者   成为的字符串参数   默认属性。