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

如何将C#字符串数组封送到VB6数组?,c#,com,vb6,c++-cli,marshalling,C#,Com,Vb6,C++ Cli,Marshalling,我有一个使用C#COM DLL的VB6应用程序。在托管C++中,我可以编写如下函数: array<String^>^ GetAManagedArray() { //Do stuff and return a managed array } 这在C++中是很好的,但是在C<系统中。数组< /COD>对象是抽象的,我似乎找不到与C++代码等价的托管。此外,在C#中,仅返回string[]不起作用 在C#中,托管阵列等效于什么 编辑:这是我拥有的功能的确切代码 C#COM功能:

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

array<String^>^ GetAManagedArray()
{
    //Do stuff and return a managed array
}

这在C++中是很好的,但是在C<<代码>系统中。数组< /COD>对象是抽象的,我似乎找不到与C++代码<数组^ ^ /代码>等价的托管。此外,在C#中,仅返回

string[]
不起作用

在C#中,托管阵列等效于什么

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

public string[] OneTwoThree()
{
    return new string[] { "1", "2", "3" };
}
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
VB6功能:

public string[] OneTwoThree()
{
    return new string[] { "1", "2", "3" };
}
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

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

如果您正在寻找创建数组的C#语法,那么对于长度为5的数组,它是
新字符串[5]
,对于具有指定值的数组,它是用null初始化的或
新字符串[]{“一”,“二”}


除此之外,您还必须更具体地说明什么“不起作用”才能帮助您。

我的猜测是test.onetwother返回单个字符串,而不是字符串数组。 尝试
Dim strArr
而不是
Dim strArr()
如果这样做有效,您必须找出C#函数的代理所使用的分隔符是什么 返回(有时阵列封送不需要在客户端中获得正确/预期的终止 代码环境)

strArr()变量实际上不是字符串数组。它是一系列变体。修正:

Dim strArr() As String
strArr = test.OneTwoThree

现在它与您的第一个片段相同。

谢谢。现在工作!我认为在VB中,“Dim a,b,c As String”与c#“String a,b,c”是一样的,但我没有意识到必须显式地为每个字符串指定类型。onetwother确实返回字符串数组。我测试过了。