遗留视觉基本代码中的隐式byref



我必须复制旧视觉基本软件中的算法,而我不理解的代码有一件事。

似乎作者已经使用某种方法来隐式传递简单的数据类型,例如整数。我第一次认为这可能是原始软件中的错误,但是在第三次发生后,它看起来是故意的。

我无法运行并调试原始(VB6或先验(代码。在我尝试重现行为(使用vb.net(的每个简单代码示例中,它总是按值传递,除非明确使用ByRef。

我举例说明:

Option Explicit
Module VBModule
    Public Sub Calculate(value)
        value = value + 1
    End Sub
    Function Starter()
        Dim value%
        Call Calculate(value)
        If value > 0 Then
            Console.WriteLine("Success")
        End If
        Console.WriteLine(value)
    End Function
    Sub Main()
        Call Starter()
    End Sub
End Module

代码取决于valueCalculate Sub更改以达到"成功"。在原始项目中,如果这不起作用,则数百行代码将无法实现。

因此,问题是,是否有一种方法可以通过参考传递value而不使用ByRef在仍在使用整数类型的同时?还是我要完全理解的代码?

在代码基础中,作者使用了明确的BYREF或BYVAL语句。使用类型字符声明变量,但是子例程参数缺少类型声明。我不确定使用的视觉基本版本。在主文件中,第一个语句是VERSION 5.00

当我在Visual Studio中打开代码时,参数的类型显示为Object。因此,要么的Visual Studio都知道我不知道的东西,要么仅仅是因为参数缺少类型声明。

我还拥有该软件的编译版本及其产生的结果看起来不错。因此,当我完成代码完成后,我至少可以检查结果。

默认参数传递是byref。您只需要指定字节参数。

至于在Visual Studio中转换为对象的参数的类型,这是因为Visual Basic中的默认类型是"变体",该类型是" variant",用于所有意图和目的映射到System.Object类型。

相关内容

  • 没有找到相关文章

最新更新