如何将C#字符串数组封送到VB6数组?

Mik*_*ebb 2 c# vb6 com c++-cli marshalling

我有一个使用C#COM DLL的VB6应用程序.在托管C++中,我可以编写如下函数:

array<String^>^ GetAManagedArray()
{
    //Do stuff and return a managed array
}
Run Code Online (Sandbox Code Playgroud)

然后我可以将返回的托管数组分配给VB6中的数组:

Sub MySub()
    Dim strArray() As String
    strArray = myComObject.GetAManagedArray
End Sub
Run Code Online (Sandbox Code Playgroud)

这在C++中工作正常,但在C#中,System.Array对象是抽象的,我似乎无法找到与C++相当的托管array<>^.另外,在C#中只是返回string[]不起作用.

C#中托管数组的等价物是什么?

编辑:这是我对功能的确切代码
C#COM功能:

public string[] OneTwoThree()
{
    return new string[] { "1", "2", "3" };
}
Run Code Online (Sandbox Code Playgroud)

VB6功能:

Private Sub Form_Load()
    Dim test As New ComObjectCSharp
    Dim strArr(), strTemp As String
    strArr = test.OneTwoThree
    strTemp = strArr(0) & " " & strArr(1) & " " & strArr(2)
    MsgBox strTemp
End Sub
Run Code Online (Sandbox Code Playgroud)

代码在VB6代码的第四行失败,错误为"编译错误:无法分配给数组"

Han*_*ant 7

strArr()变量实际上不是字符串数组.这是一系列变种.固定:

Dim strArr() As String
strArr = test.OneTwoThree
Run Code Online (Sandbox Code Playgroud)

现在它与您的第一个代码段相同.