【发布时间】:2010-03-15 16:12:33
【问题描述】:
在 Visual basic 6 中,我声明一个这样的子:
Private Sub test1(ByRef XmlFooOutput As String)
...
End Sub
之后,我声明了另一个 sub,如下所示:
Private Sub test2(ByRef xmlFooOutput As String)
...
End Sub
自动将第一种方法转换为:
Private Sub test1(ByVal xmlFooOutput As String)
...
End Sub
所以 XmlFooOutput 参数在 xmlFooOutput 中进行了转换。
这是一个非常危险的特性,因为这些方法可以映射到不同的 XSL 表示文件,这些文件通过 Xpath 读取 XML 值。 因此,当 test1 参数重命名时,绑定到 test1 方法的 XSL 会损坏,因为 Xpath 指向 XmlFooOuput,但正确的值现在在 xmlFooOutput 中。
是否可以删除这个奇怪的功能? 我正在使用 Microsoft Visual Basic 6.0 (SP6)。
这个问题有一些重复:
据我所知,没有实用的解决方案来禁用这个 Intellisense evil 功能。
【问题讨论】:
-
我无法在 VB6 SP5 中复制此行为。这段代码是在表单、模块还是类中?
-
我有点困惑。 VB6 不区分大小写,因此 XmlFooOuput 与 xmlFooOuput 相同。如果你想确保变量在VB6中具有不同的名称,我相信你实际上必须有除了字符大小写之外的差异。
-
@Heather 这种行为在形式和模块上都有。没有在课堂上尝试过。 @Smoore 困惑什么?你觉得这不奇怪吗?
-
@systempuntoout 这很奇怪。如果您注意在与第一个完全相同的情况下键入
XmlFooOutput的第二个实例,它仍然会做同样的事情吗? -
不,它没有。它们与第一个字母大写保持相等。