Подтвердить что ты не робот

Почему функция VB.Net, возвращающая строку, фактически возвращает только один символ?

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

Здесь пример фрагмента кода для воссоздания проблемы, с которой я столкнулся:

Public Function GetSomeStringValue(Value as Integer) As String
    ... Code Goes here
    Return Some_Multicharacter_string
End Function

Вызов функции выглядит следующим образом:

SomeStringValue = GetSomeStringValue(Value)

Почему это не возвращает всю строку?

4b9b3361

Ответ 1

Примечание: этот ответ был первоначально написан OP, Kibbee, как самоответ. Однако это было написано в теле вопроса, а не как отдельный отдельный ответ. Поскольку OP отказался от повторных запросов других пользователей, в том числе модератора, на повторную отправку в соответствии с правилами сайта, я сам перепрограммирую его.

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

В какой-то момент, когда я был рефакторинг кода, я сменил функцию, чтобы избавиться от параметра Value, оставив ее следующим образом:

Public Function GetSomeStringValue() As String
    ... Code Goes here
    Return Some_Multicharacter_String
End Function

Однако я забыл удалить параметр, который я передавал при вызове функции:

SomeStringValue = GetSomeStringValue(Value)

Компилятор не жаловался, потому что интерпретировал то, что я делал, вызывая функцию без скобок, которая является устаревшей функцией из дней VB6. Затем параметр Value преобразуется в индекс массива строки (aka character array), который был возвращен из функции.

Итак, я удалил параметр, и все работало нормально:

SomeStringValue = GetSomeStringValue()

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