Вопрос

Есть ли способ использовать PAMPLARRAY BYREF? Запрет того, что это там обходной путь, который выполняет то же самое?

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

Фон: портирование на некоторый старый код и пытаясь сохранить одну и ту же структуру как можно больше.


РЕДАКТИРОВАТЬ

Конкретный пример того, что я хочу:

У меня есть какой-код в турбобасине, что я портирую в VB.NET. Код встроен в такие функции, как

Input#1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

Где вход () получает файл № 1 и считывает три части данных из него и присвоивает его трехменным переменным. Я хотел бы повторить это поведение с помощью собственной функции ввода (). Для этого, как бы я предприму в трех (или более или менее) переменных и назначаю их значениям?

В идеале я бы достиг этого, только модифицируя свое собственное определение ввода (), поэтому я могу гадить в кодовой базе как можно меньше.

Это было полезно?

Решение

Я никогда не использовал Turbobasic, но синтаксис выглядит идентичным VB6 Ввод # утверждение, Поэтому я предполагаю, что семантика также одинакова.

Этот код VB6

Input #1,Data$(I%,1),Data$(I%,2),Data$(I%,3)

Эквивалентно этому VB.Net

Input(1,Data$(I%,1))
Input(1,Data$(I%,2))
Input(1,Data$(I%,3))

Волшебник обновления VB.NET преобразует VB6 Input # Заявление вроде этого. Я бы просто портировал код, а не реализую свою собственную функцию. Преобразование от VB6 в VB.NET требует существенных редактиций в базе кода, я ожидал, что турбобасич будет еще более требовательным.

Другие советы

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

Даже без ByRef, Вызыватель все еще будет видеть изменения в содержании массива. (Массивы являются ссылочными типами).

Если вы не видите parameterName = something В методе вам не нужно ByRef.

Точка ParamArray Параметр - пропустить его неявно созданный массив.
В таких использования, ByRef не может иметь никакого эффекта.

В настоящее время нет способа пройти параметры посредством ссылки в VB.NET. Чтобы пройти серию указанных значений к способу, который принимает параметр, CLR заполняет массив соответствующей длины с указанным вами значениями, а затем передает этот массив в позвонитещую вами метод. Нет способа скопировать все значения из массива, который был передан и обратно в исходные переменные.

Я предполагаю, что вы портировать код от VB6, где Только Способ передачи параметров является ссылкой, но вам не должно быть никакой необходимости в этой функциональности в .NET.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top