Cамоучитель по VB.NET

       

Функции явного преобразования типов




Функция
Описание
CBool Преобразует выражение к типу Boolean
CByte Преобразует выражение к типу Byte
CInt Преобразует выражение к типу Integer с округлением
CIng Преобразует выражение к типу Long с округлением
CSng Преобразует выражение к типу Single
CDate Преобразует выражение к типу Date
СDbl Преобразует выражение к типу Double
CDec Преобразует выражение к типу Decimal
CStr Преобразует выражение к типу String
CChar Преобразует первый символ строки к типу Char

,VB .NET выполняет числовые преобразования только в том случае, если преобразуемое число входит в интервал допустимых значений нового типа; в противном случае выдается сообщение об ошибке.

На первый взгляд кажется, что тип Char можно интерпретировать как короткое целое без знака (то есть целое в интервале от 0 до 65 535), но делать этого не следует. Начиная с бета-версии 2 было запрещено преобразование Char в число функциями семейства CInt; вместо этого используется встроенная функция Asc.

Тип object и исчезновение типа Variant

Вероятно, вы заметили, что при описании типов нигде не упоминается тип Variant. BVB .NET этот тип не поддерживается — и это очень хорошо! В VB6 переменные Variant допускали хранение данных произвольного типа. Программисты часто злоупотребляли этой возможностью, что приводило к возникновению нетривиальных ошибок в программах. В VB .NET все типы данных (даже числовые, как Integer) являются частными случаями типа Object. Может показаться, что тип Object стал аналогом Variant в VB .NET, но это не так. Как будет показано в главах 4 и 5, тип Object занимает в программировании .NET значительно более важное место и обладает множеством интересных возможностей. Мы вернемся к типу Object в главах 4 и 5.

Ниже приведен хрестоматийный пример — преобразование температуры по Цельсию в температуру по шкале Фаренгейта. Мы руководствуемся следующими предположениями:

  1. Пользователь завершает ввод текста нажатием клавиши Enter.
  2. Все введенные символы воспринимаются методом ReadLine().
  3. Пользователь ввел число, поэтому введенный текст преобразуется к числовому типу функцией CDec (конечно, на практике введенные данные следовало бы предварительно проанализировать):

' Преобразование температуры по Цельсию в температуру по Фаренгейту

Option Strict On Module

Modulel Sub Main()

Dim cdeg As Decimal

Console. Writer Enter the degrees in centigrade...")

cdeg = CDec(Console.ReadLine())

Dim fdeg As Decimal

fdeg = (((9@ / 5) * cdeg) + 32)

Console.WriteLine(cdeg & " is " & fdeg & " degrees Fahrenheit.")

Console. ReadLine()

End Sub

End Module

Обратите внимание на суффикс @ — он гарантирует, что при вычислениях будет использоваться тип Decimal. Если убрать этот суффикс, то при включенной жесткой проверке типов будет выдано сообщение об ошибке!

При использовании простого оператора / для деления в VB .NET необходимо учитывать некоторые нюансы. За дополнительной информацией обращайтесь к разделу «Математические операторы».



Содержание раздела