Как мне упорядочить массив строк C # в массив VB6? - PullRequest
2 голосов
/ 17 ноября 2010

У меня есть приложение VB6, которое использует C # COM DLL. В управляемом 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 с ошибкой «Ошибка компиляции: невозможно присвоить массиву»

Ответы [ 3 ]

7 голосов
/ 17 ноября 2010

Переменная strArr () на самом деле не является массивом строк.Это массив вариантов.Исправление:

Dim strArr() As String
strArr = test.OneTwoThree

Теперь оно совпадает с вашим первым фрагментом.

0 голосов
/ 17 ноября 2010

Я думаю, что будет test.OneTwoThree возвращает одну строку, а не массив строк. Попробуйте Dim strArr вместо Dim strArr() Если это работает, вы должны выяснить, что является разделителем, который прокси для функции C # возвращено (иногда маршалинг массивов не требуется, чтобы получить правильное / ожидаемое завершение в клиенте код окружающей среды)

0 голосов
/ 17 ноября 2010

Если вы ищете синтаксис C # для создания массива, то он new string[5] для массива длиной 5, инициализируется нулями или new string[] { "one", "two" } для массива с указанными значениями.

Помимочто вам нужно быть более конкретным о том, что «не работает», чтобы мы могли вам помочь.

...