Когда необходимо преобразовать типы данных в Visual Basic 2010 - PullRequest
2 голосов
/ 25 февраля 2011

Visual Basic 2010 (Express).Лучше всего привести это на примере ...

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

intMyCount = CInt(txtUserInput.Text)

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

lblResults.Text = intMyCount & " number of times."

вместо использования intMyCount.ToString.

Почему это работает?Делает ли VB неявные преобразования, когда это возможно?Существуют ли примеры, когда неявное преобразование с помощью .ToString или использование CInt может привести к неожиданным результатам?

Ответы [ 2 ]

4 голосов
/ 25 февраля 2011

Это делается с использованием позднего связывания, и это опасно, потому что, если преобразование когда-либо завершится неудачно (а во многих случаях может произойти сбой вашего первого примера), оно завершится исключением во время выполнения. Чтобы заставить компилятор обеспечить более безопасное приведение, включите Option Strict On.

Кроме того, большую часть времени вы не хотите использовать CInt() для преобразования вашей строки в int. Вместо этого предпочитайте Integer.Parse() или Integer.TryParse().

1 голос
/ 25 февраля 2011

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

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