Ошибка значения параметра по умолчанию после преобразования из VB6 в VB.Net - PullRequest
5 голосов
/ 09 марта 2012

У нас есть устаревший компонент, который был преобразован из VB6 в VB.Net.

Компонент VB был вызван со страницы ASPX с использованием Request ("param") для передачи необязательных параметров в вызовы функций.Это означает, что значение равно нулю / ничего, если параметр отсутствует.

Затем параметры были добавлены в вызов ADODB хранимой процедуры с использованием Parameters.Append.

При использовании из VB6 отсутствуетЗначения Request ("param") были приведены к пустым строкам при передаче в компонент VB6.Это означало, что вызов ADODB был выполнен (для обязательных параметров).

Когда код был перенесен в VB.Net, значения нулевого запроса («param») теперь передаются как нулевые значения (ничего не VB?)и Parameters.Append пропускает добавление значения, если оно nothing.Это вызвало прерывание вызовов хранимых процедур, так как требуемый параметр отсутствовал.

Мой вопрос:

Если мы изменим параметры функции компонента на optional и получим paramname as string = "" по умолчанию, будет ли значение NULL / ничего преобразовываться в пустую строку, или NULL / ничего не будет трактоваться иначе, чем просто отсутствующий параметр?

Извинения за использование термина NULL, но 99% моей работы - C #:)

1 Ответ

8 голосов
/ 09 марта 2012

Если вы передадите Nothing в качестве аргумента для параметра Optional String, который по умолчанию равен пустой строке, переменная внутри метода будет иметь значение Nothing. не будет иметь значение пустой строки. Это два разных значения, потому что строки в .Net являются ссылочными типами. Вы должны добавить код в начало метода, чтобы заменить Nothing для этих параметров пустой строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...