将VB6模块转换为VB.NET

use*_*582 5 vb.net vb6 vb6-migration

我几乎完成了将模块从VB6转换为VB.NET,但是我遇到了以下2个引号的问题,我想知道是否有任何方法可以解决这个问题:

Structure AUDINPUTARRAY
    bytes(5000) As Byte
End Structure
Run Code Online (Sandbox Code Playgroud)

我正在尝试将该字节行更改为:Dim bytes(5000)as Byte,但它不允许我在结构中定义大小.


这是第二个:

Private i As Integer, j As Integer, msg As String * 200, hWaveIn As integer
Run Code Online (Sandbox Code Playgroud)

我不知道如何转换:msg As String*200

Aks*_*ita 4

您无法在 VB.Net 中声明初始大小,您可以稍后在构造函数中或任何需要的地方使用 Redim 语句设置其大小

Structure AUDINPUTARRAY
    Public bytes() As Byte
    Public Sub New(ByVal size As Integer)
        ReDim bytes(size) ' set size=5000

    End Sub


End Structure
Run Code Online (Sandbox Code Playgroud)

在 Visual Basic .NET 中,除非在声明中使用 VBFixedStringAttribute 类属性,否则无法将字符串声明为固定长度。前面示例中的代码会导致错误。

您声明一个没有长度的字符串。当您的代码将值分配给字符串时,值的长度决定了字符串的长度,请参阅http://msdn.microsoft.com/en-us/library/f47b0zy4%28v=vs.71%29.aspx 。所以你的声明将变成

    Private i As Integer, j As Integer, hWaveIn As Integer
    <VBFixedString(200)> Private msg As String
Run Code Online (Sandbox Code Playgroud)