Функции преобразования типов (Visual Basic)

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

CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)

Часть

  • expression
    Обязательный. Любое выражение исходного типа данных.

Тип данных возвращаемого значения.

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

Имя функции

Возвращаемый тип данных.

Диапазон для аргумента expression

CBool

Тип данных Boolean (Visual Basic)

Любое допустимое Char, String или числовое выражение.

CByte

Тип данных Byte (Visual Basic)

от 0 до 255 (без знака); дробная часть округляется.1

CChar

Тип данных Char (Visual Basic)

Любое допустимое Char или String выражение; преобразуется только первый знак String; значение может быть от 0 до 65535 (без знака).

CDate

Тип данных Date (Visual Basic)

Любое допустимое представление даты и времени.

CDbl

Тип данных Double (Visual Basic)

от -1.79769313486231570E+308 до -4.94065645841246544E-324 для отрицательных значений; от 4.94065645841246544E-324 до 1.79769313486231570E+308 для положительных значений.

CDec

Тип данных Decimal (Visual Basic)

+/-79228162514264337593543950335 для целых чисел, т.е. чисел без знаков после запятой. Для чисел с 28 десятичными разрядами диапазоном является +/-7.9228162514264337593543950335. Наименьшее возможное ненулевое число это 0.0000000000000000000000000001 (+/-1E-28).

CInt

Тип данных Integer (Visual Basic)

от -2147483648 до 2147483647; дробная часть округляется.1

CLng

Тип данных Long (Visual Basic)

от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807; дробная часть округляется.1

CObj

Тип данных Object

Любое допустимое выражение.

CSByte

Тип данных SByte (Visual Basic)

от -128 до 127; дробная часть округляется.1

CShort

Тип данных Short (Visual Basic)

от -32768 до 32767; дробная часть округляется.1

CSng

Тип данных Single (Visual Basic)

(От -3,402823E+38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E+38 для положительных значений.

CStr

Тип данных String (Visual Basic)

Возвращаемые значения функции CStr зависят от аргумента expression. Дополнительные сведения см. в разделе Возвращаемые значения функции CStr (Visual Basic).

CUInt

Тип данных UInteger

от 0 до 4,294,967,295 (без знака); дробная часть округляется.1

CULng

Тип данных ULong (Visual Basic)

от 0 до 18446744073709551615 (без знака); дробная часть округляется.1

CUShort

Тип данных UShort (Visual Basic)

от 0 до 65535 (без знака); дробная часть округляется.1

1 Дробные части могут быть подчиняться специальному типу округления под названием банковское округление. См. примечания для дополнительных сведений.

Заметки

Как правило предпочтительнее использовать функции преобразования типа Visual Basic, чем методы .NET Framework, например ToString() в классе Convert или в отдельном типе структуры или класса. Функции языка Visual Basic предназначены для оптимального взаимодействия с Visual Basic, и они также сделают исходный код короче и облегчат его чтение. Кроме того методы преобразования .NET Framework не всегда получают тот же результат, что функции Visual Basic, например при преобразовании Boolean к Integer. Дополнительные сведения см. в разделе Устранение неполадок, связанных с типами данных (Visual Basic).

Поведение

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

  • Сбой преобразования. Если параметр expression, передаваемый в функцию, находится вне диапазона значений типа данных, в который преобразуется expression, возникает ошибка OverflowException.

  • Дробная часть. При преобразовании нецелого значения к целочисленному типу функции преобразования целых чисел (CByte, CInt, CLng, CSByte, CShort, CUInt, CULng и CUShort) удаляют дробную часть и округляют значение до ближайшего целого числа.

    Если дробная часть равна точно 0,5, то функции преобразования целых чисел округлят его до ближайшего четного целого числа. Например, 0,5 округляется до 0, а 1,5 и 2,5 округляются до 2. Это иногда называется банковским округлением, и его целью является компенсация сдвигов, которые могут накапливаться при сложении многих таких чисел.

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

  • Преобразования даты/времени. Функция IsDate используется для определения возможности преобразования значения в дату и время. CDate распознает литералы даты и литералы времени, но не числовые значения. Чтобы преобразовать значение Date Visual Basic 6.0 к Date Visual Basic 2005 или более поздних версий, можно использовать метод DateTime.FromOADate.

  • Нейтральные значения даты/времени. Тип данных Date (Visual Basic) всегда содержит и дату, и время. При преобразовании типов в Visual Basic нейтральным значением даты считается 1/1/1 (1 января 1 года), а нейтральным значением времени — 00:00:00 (полночь). Если значение с типом Date преобразуется в строку, функция CStr не включает нейтральные значения в конечную строку. Например, при преобразовании значения #January 1, 0001 9:30:00# в строку, будет возвращен результат "9:30:00"; дата отбрасывается. При этом сведения о дате останутся в исходном значении Date и могут быть извлечены с помощью таких функций, как DatePart.

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

    Если требуется преобразовать в или из строкового представление значения в формате, отличном от задаваемого языка, то невозможно использовать функции преобразования типа Visual Basic. Чтобы сделать это, используйте методы ToString(IFormatProvider) и Parse(String, IFormatProvider) для этих типов значений. Например, используйте Double.Parse при преобразовании строки к Double и используйте Double.ToString при преобразовании значения из типа Double в строку.

Функция CType

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

Для сравнения CType с другими зарезервированными словами преобразования типов см. Оператор DirectCast (Visual Basic) и Оператор TryCast (Visual Basic).

Пример использования функции CBool

В следующем примере для преобразования к Boolean используется функция CBool. Если результатом вычисления выражения является ненулевое значение, то CBool возвращает True; в противном случае она возвращает False.

Dim a, b, c As Integer 
Dim check As Boolean
a = 5
b = 5
' The following line of code sets check to True.
check = CBool(a = b)
c = 0
' The following line of code sets check to False.
check = CBool(c)

Пример использования функции CByte

В следующем примере для преобразования к Byte используется функция CByte.

Dim aDouble As Double 
Dim aByte As Byte
aDouble = 125.5678
' The following line of code sets aByte to 126.
aByte = CByte(aDouble)

Пример использования функции CChar

В следующем примере для преобразования первого символа выражения String к типу Char используется функция CChar.

Dim aString As String 
Dim aChar As Char 
' CChar converts only the first character of the string.
aString = "BCD" 
' The following line of code sets aChar to "B".
aChar = CChar(aString)

Входным аргументом CChar должен быть тип данных Char или String. Невозможно использовать функцию CChar для преобразования числа в символ, поскольку функция CChar не может принимать данные числовых типов. В этом примере получается число, представляющее кодовую позицию (код символа), которое преобразуется в соответствующий символ. Использует функцию InputBox для получения строки цифр, CInt для преобразования строки к типу Integer, а ChrW для преобразования строки к типу Char.

Dim someDigits As String 
Dim codePoint As Integer 
Dim thisChar As Char
someDigits = InputBox("Enter code point of character:")
codePoint = CInt(someDigits)
' The following line of code sets thisChar to the Char value of codePoint.
thisChar = ChrW(codePoint)

Пример использования функции CDate

В следующем примере для преобразования строк к Date используется функция CDate. Как правило, не рекомендуется жестко кодировать дату и время в виде строк (как показано в этом примере). Вместо этого используйте литералы даты и времени, например #Feb 12, 1969# и #4:45:23 PM#.

Dim aDateString, aTimeString As String 
Dim aDate, aTime As Date
aDateString = "February 12, 1969"
aTimeString = "4:35:47 PM" 
' The following line of code sets aDate to a Date value.
aDate = CDate(aDateString)
' The following line of code sets aTime to Date value.
aTime = CDate(aTimeString)

Пример использования алгоритма CDbl

Dim aDec As Decimal 
Dim aDbl As Double 
' The following line of code uses the literal type character D to make aDec a Decimal.
aDec = 234.456784D
' The following line of code sets aDbl to 1.9225456288E+1.
aDbl = CDbl(aDec * 8.2D * 0.01D)

Пример использования функции CDec

В следующем примере для преобразования числа к Decimal используется функция CDec.

Dim aDouble As Double 
Dim aDecimal As Decimal
aDouble = 10000000.0587
' The following line of code sets aDecimal to 10000000.0587.
aDecimal = CDec(aDouble)

Пример использования функции CInt

В следующем примере для преобразования значения к Integer используется функция CInt.

Dim aDbl As Double 
Dim anInt As Integer
aDbl = 2345.5678
' The following line of code sets anInt to 2346.
anInt = CInt(aDbl)

Пример использования алгоритма CLng

В следующем примере для преобразования значения к Long используется функция CLng.

Dim aDbl1, aDbl2 As Double 
Dim aLng1, aLng2 As Long
aDbl1 = 25427.45
aDbl2 = 25427.55
' The following line of code sets aLng1 to 25427.
aLng1 = CLng(aDbl1)
' The following line of code sets aLng2 to 25428.
aLng2 = CLng(aDbl2)

Пример использования функции CObj

В следующем примере для преобразования числа к Object используется функция CObj. Переменная Object содержит только 4-байтовый указатель, указывающий на значение типа Double.

Dim aDouble As Double 
Dim anObject As Object
aDouble = 2.7182818284
' The following line of code sets anObject to a pointer to aDouble.
anObject = CObj(aDouble)

Пример использования функции CSByte

В следующем примере для преобразования числа к SByte используется функция CSByte.

Dim aDouble As Double 
Dim anSByte As SByte
aDouble = 39.501
' The following line of code sets anSByte to 40.
anSByte = CSByte(aDouble)

Пример использования функции CShort

В следующем примере для преобразования числа к Short используется функция CShort.

Dim aByte As Byte 
Dim aShort As Short
aByte = 100
' The following line of code sets aShort to 100.
aShort = CShort(aByte)

Пример использования алгоритма CSng

В следующем примере для преобразования значения к Single используется функция CSng.

Dim aDouble1, aDouble2 As Double 
Dim aSingle1, aSingle2 As Single
aDouble1 = 75.3421105
aDouble2 = 75.3421567
' The following line of code sets aSingle1 to 75.34211.
aSingle1 = CSng(aDouble1)
' The following line of code sets aSingle2 to 75.34216.
aSingle2 = CSng(aDouble2)

Пример использования алгоритма CStr

В следующем примере для преобразования числа к String используется функция CStr.

Dim aDouble As Double 
Dim aString As String
aDouble = 437.324
' The following line of code sets aString to "437.324".
aString = CStr(aDouble)

В следующем примере для преобразования Date к String используется функция CStr.

Dim aDate As Date 
Dim aString As String 
' The following line of code generates a COMPILER ERROR because of invalid format. 
' aDate = #February 12, 1969 00:00:00# 
' Date literals must be in the format #m/d/yyyy# or they are invalid. 
' The following line of code sets the time component of aDate to midnight.
aDate = #2/12/1969#
' The following conversion suppresses the neutral time value of 00:00:00. 
' The following line of code sets aString to "2/12/1969".
aString = CStr(aDate)
' The following line of code sets the time component of aDate to one second past midnight.
aDate = #2/12/1969 12:00:01 AM#
' The time component becomes part of the converted value. 
' The following line of code sets aString to "2/12/1969 12:00:01 AM".
aString = CStr(aDate)

Функция CStr всегда предоставляет значение с типом Date в стандартном кратком формате для текущих региональных параметров, например 6/15/2003 4:35:47 PM. Однако CStr подавляет нейтральные значения 1/1/0001 для даты и 00:00:00 для времени.

Более подробно сведения о значениях, возвращаемых CStr, содержатся в разделе Возвращаемые значения функции CStr (Visual Basic).

Пример использования функции CUInt

В следующем примере для преобразования числа к UInteger используется функция CUInt.

Dim aDouble As Double 
Dim aUInteger As UInteger
aDouble = 39.501
' The following line of code sets aUInteger to 40.
aUInteger = CUInt(aDouble)

Пример использования функции CULng

В следующем примере для преобразования числа к ULong используется функция CULng.

Dim aDouble As Double 
Dim aULong As ULong
aDouble = 39.501
' The following line of code sets aULong to 40.
aULong = CULng(aDouble)

Пример использования функции CShort

В следующем примере для преобразования числа к UShort используется функция CUShort.

Dim aDouble As Double 
Dim aUShort As UShort
aDouble = 39.501
' The following line of code sets aUShort to 40.
aUShort = CUShort(aDouble)

См. также

Ссылки

Функции преобразования (Visual Basic)

Asc

AscW

Chr

ChrW

Int

Fix

Format

Hex

Oct

Str

Val

Другие ресурсы

Преобразование типов в Visual Basic