Что эквивалентно утверждению типа из VBA в C #? - PullRequest
1 голос
/ 01 июля 2019

Что эквивалентно Типу из VBA в C #?

Я спрашиваю, потому что у меня есть некоторый код в Excel, который я пытаюсь превратить в отдельное приложение C #.У меня есть функция, которая приходит из .dll, которая принимает тип с некоторыми строками и long в качестве аргумента.Как бы я повторил это в C #?Будет ли это даже работать, или функция из .dll даже не будет работать в C #?

Я еще не экспериментировал с этим, потому что все это связано с работающей базой данных, и я хочу знать, как это будет работать, прежде чем что-то напутать.

Ответы [ 3 ]

2 голосов
/ 01 июля 2019

Вы говорите, что вы используете Type в VBA для передачи данных в функцию, содержащуюся в некоторой DLL.Просмотр некоторого кода поможет, но этот метод обычно используется для вызова DLL (Windows API или сторонней) DLL, ожидающей некоторой структуры типа C.

В C # вы должны использовать P / Invoke для вызова функций в неуправляемых DLL, и вы обычно используете struct для сложных типов, необходимых для DLL.Использование class также возможно, но есть некоторые тонкости, о которых нужно знать .

Простой пример можно найти в этом ответе SO:

Если ваша DLL является частью Windows API, вы можете использовать http://pinvoke.net/, чтобы найти готовые объявления C # для функций, а также структур данных.

1 голос
/ 01 июля 2019

Ближайшим будет тип данных Struct. Это похоже на то, что это пользовательский тип данных, содержащий один или несколько элементов (членов) различных типов данных, и эти элементы доступны как поля типа / структуры.
Оба являются типами значений и используют распределение стека (обычно).

1 голос
/ 01 июля 2019

Пример в связанной документации будет переписан как:

struct StateData 
{
    int[] CityCode;
    string County;
}

var Washington = new StateData[100];

Хотя в какой-то момент вам придется инициализировать CityCode. В VBA вы можете сделать это неявно, но в c # вам придется написать что-то вроде:

foreach (var w in Washington) w.CityCode = new int[100];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...