簡體   English   中英

如何將C#字符串數組編組到VB6數組?

[英]How do I marshal a C# string array to a VB6 array?

我有一個使用C#COM DLL的VB6應用程序。 在托管C ++中,我可以編寫如下函數:

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

然后,我可以將返回的托管數組分配給VB6中的數組:

Sub MySub()
    Dim strArray() As String
    strArray = myComObject.GetAManagedArray
End Sub

這在C ++中可以正常工作,但是在C#中, System.Array對象是抽象的,我似乎找不到與C ++ array<>^等效的托管對象。 同樣,在C#中,僅返回string[]不起作用。

C#中等效的托管數組是什么?

編輯:這是我具有的確切代碼
C#COM函數:

public string[] OneTwoThree()
{
    return new string[] { "1", "2", "3" };
}

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

該代碼在VB6代碼的第四行失敗,並顯示錯誤“編譯錯誤:無法分配給數組”

strArr()變量實際上不是字符串數組。 它是一系列變體。 固定:

Dim strArr() As String
strArr = test.OneTwoThree

現在,它與您的第一個片段相同。

如果您正在尋找C#語法來創建數組,則使用長度為5的數組的new string[5] ,以空值初始化,或者使用具有指定值的數組的new string[] { "one", "two" }

除此之外,您還必須更具體地說明“不起作用”對我們的幫助。

我的猜測是test.OneTwoThree返回單個字符串而不是字符串數組。 嘗試使用Dim strArr而不是Dim strArr()如果Dim strArr() ,則必須找出C#函數的代理返回的分隔符是什么(有時不需要封送數組就可以在客戶端代碼環境中獲得正確/預期的終止)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM