2015-11-11 3 views
-1

Я новичок в VB и имею простую программу. Я просто хочу, чтобы программа отображала в окне сообщения количество символов в длинной переменной. Я использую функцию Len(). Код выглядит следующим образом.Неверное количество символов, возвращенных Len

 Try 

     Dim num As Long = 1230456985623145 
     Dim numLength As Long 

     numLength = Len(num) 
     MessageBox.Show(numLength.ToString()) 

    Catch ex As Exception 

    End Try 

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

+2

Вы описываете проблему, используя 'num' в своем коде, однако переменная, которую вы измеряете, является' name'. –

+0

Какова ценность 'name'? Вы хотите «Лен (имя)» или «Лен (num.ToString)»? – haraman

+1

Я также предлагаю, учитывая, что вы упоминаете, что являетесь новичком в VB, вы избегаете использования таких функций, как «Лен» из пространства имен Microsoft.VisualBasic; это сделает любой будущий переход на такие языки, как C#, намного проще. –

ответ

5

Это должно быть так:

Dim num As Long = 1230456985623145 
Dim numLength As Long 

numLength = Len(num.ToString()) 
MessageBox.Show(numLength.ToString()) 

Если вы забыли использовать ToString(), функция Len возвращает количество байт, необходимое для хранения переменного , что равно 8, потому что для переменной Long требуется 8 байт для хранения.

Определение Len function в MSDN:

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

В исходном коде (до вашего редактирования):

используется имя в качестве параметра в вашей функции Len. Поскольку ваш код является WinForm, имя является свойством формы. Проверить значение имени с помощью:

MessageBox.Show(Name) 

string.length

Использование Длина свойство строки является более предпочтительным. Как сказал Adrian Wragg, проще конвертировать ваши коды между языками, поддерживаемыми .Net (C#, VB и F #).

+0

Большое спасибо. Теперь он отлично работает. –

Смежные вопросы