NET
Common Language Runtime (
CLR) включва Общата система на типовете
(
Common Type System (
CTS)),
която дефинира типовете данни, поддържани от
CLR. Така всеки език в работната среда (Framework) на .NET (VB, C#, JScript, и C++) включва подмножество от
общото множество (common set) типове данни.
Казваме
подмножество (subset) защото, за съжаление не всички
CTS типове са включени във VB .NET. Например
CTS включва някои целочислени типове данни без знак, които не се
представят от VB. Възможно е да се използват VB-неподдържани типове данни чрез кореспондиращия базов клас в
библиотеката
Base Class Library.
Ето пример илюстриращ
възможността за използване на 16-битов целочислен тип данни без знак
(16-bit integer data type), в областта от 0 до 65,535. Използването на
метод
ToUInt16 на конвертиращия клас е за актуално използване на 16-битово
целочислено число без знак:
Dim ui As UInt16
ui = Convert.ToUInt16(65535)
MsgBox(ui.ToString)
Всъщност,
естествените VB типове данни са обвивки (
wrappers) за
CTS типовете данни. Нека да
илюстрираме, че VB целочислен тип данни (Integer data type) e обвивка за
структурата
Int32, която е част от .NET
Framework пространството от
имена
System (System namespace). Eдин от
членовете на структурата
Int32 е
MaxValue, който връща максималната стойност
позволена за този тип данни. Понеже
MaxValue не е официално част от VB .NET, можем да напишем:
Dim i As Integer
MsgBox(i.Maxvalue) ' Displays 2147483647
-
Стойностни и референтни типове (Value,
Reference Types)
Типовете
дефинирани в
CTS попадат в три категории:
·
Value types
- Стойностни типове
·
Reference types - Референтни типове
·
Pointer types
- Указателни типове
Понеже
указателните типове не са включени във VB, няма да ги дискутираме.
Разликата
между
Стойностни типове и
Референтни типове се състои в това как променливите от кореспондиращите типове
представят типа. Когато променлива от
Стойностен тип (value-type) е дефинирана, както в:
Dim int As Integer = 5
локацията
в паметта е поставена настрана да държи актуалните данни (в този случай
числото 5). В
контраст с горното, когато променлива от
Референтен тип (reference-type) е дефинирана, както в:
Dim
obj As New CEmployee
компилаторът
на VB създава обекта в паметта, но след това установява
obj в 4-byte локация памет, която
съдържа
адреса (address) на обекта.
Накратко
казано,
value-
type променливите
съдържат данните, докато
reference-
type променливите
сочат данните.
Разликата
между
стойностните типове и
референтните типове имат последствия, едно от които е начина на
работата по присвояване. За илюстрация разгледайте този клас, който има отделно
свойство:
Public Class MyClass
Public Vuzrast As Short
End Class
и
структурата MyStruct, също с отделно свойство:
Structure MyStruct
Public Vuzrast As Short
End Structure
Класовете
са референтни типове, докато структурите са стойностни типове. Сега разгледайте следващия код:
' Деклариране на две променливи class и две променливи structure.
Dim objRef1 As MyClass
Dim objRef2 As MyClass
Dim objValue1 As MyStruct
Dim objValue2 As MyStruct
' Инстанциране на class.
objRef1 = New MyClass( )
' Определяне на свойство Vuzrast на 20.
objRef1.Vuzrast
= 20
' Присвояване на втората променлива - първата променлива.
' Това е равно на обектна референция *references* защото
' класовете са референтни типове.
objRef2 = objRef1
' Определяне на свойство Vuzrast на objRef2 равно на 30.
objRef2.Vuzrast
= 30
' Проверяване на стойностите на свойство Vuzrast.
Debug.WriteLine(objRef1.Vuzrast )
Debug.WriteLine(objRef2.Vuzrast )
' Да направим същото за structure
' Инстанциране на structure.
objValue1 = New MyStruct( )
' Определяне на свойство Vuzrast на 20.
objValue1.Vuzrast
= 20
' Присвояване на втората променлива - първата променлива.
' Това е равно на обектна стойност *values* защото
' структурите са стойностни типове (value types).
objValue2 = objValue1
' Присвояване на свойство Vuzrast на objValue2 равно на 30.
objValue2.Vuzrast
= 30
' Проверяване на стойностите на свойство Vuzrast.
Debug.Writeline(objValue1.Vuzrast )
Debug.Writeline(objValue2.Vuzrast )
Сега изходът е следния:
30
30
20
30
За да
разберем какво се е случило, трябва да проследим референтното
присвояване:
objRef2 = objRef1
присвоява
и на двете променливи една и съща стойност. Но тази стойност е
адреса на обекта, и така и двете променливи сочат
един и същ обект. Докато, когато сменим
свойство
Vuzrast използвайки втората променлива, тази смяна
рефлектира и при първата променлива.
От
друга страна присвояването на стойност:
objValue2 = objValue1
допринася
да се създаде втората структура, поставяйки на свойствата на новата структура същата стойност
като на оригиналната структура. Така, смяната на свойство
Vuzrast на едната структура не касае това свойство (
Vuzrast ) на другата.
Запомнете,
че
типът масив на VB (Array type) e също референтен. Ето код за илюстрация:
Dim iArray1( ) As Integer = {1, 2, 3}
Dim iArray2( ) As Integer
iArray2 = iArray1
iArray1(0) = 100
msgbox(iArray2(0))
Диалоговия
прозорец за съобщения ще пакаже 100, показвайки, че двете променливи от тип масив сочат към един
и същ масив.
Стринговия
тип данни (String data type) е референтен, представен от класа Стринг (String class). Но проявява някои
характеристики на стойностен тип. За илюстрация разгледайте кода:
Dim s1, s2 As String
s1 = "String 1"
s2 = s1
s2 = "String 2"
MsgBox(s1)
Понеже
е референтен тип, очакваме съобщение "String 2", но излиза - "String 1". Причината ще я намерим в документацията на Microsoft:
Инстанцията
на
String е "неизменна" защото неговата стойност не може
да бъде модифицирана, веднаж създадена вече.
Методите,
които служат за модифициране на
String, всъщност връщат нова инстанция на стринга.
Така
че кода:
s2 = s1
сочи s2 към същия стринг като s1, както е обичайно за референтни
типове. След това
опита да се модифицира стринга в кода:
s2 = "String 2"
няма да
произведе очаквания резултат, защото стринговете са непроменяеми. Наместо
това ще получим нов стринг, сочещ s2, защото s1 запазва своята стойност.
Следният
код доказва това заключение:
Dim s1, s2 As String
s1 = "String 1"
' s2 сочи към същия низ - string като s1
s2 = s1
' Показваме s2 преди промени в низа (string)
MsgBox(s2) ' Дава "String1"
' сменяме низа (string)
s2 = "String 2"
' Присвояваме на s1 - Nothing
s1 = Nothing
' Сега s1 е nothing и съобщителната кутия го показва
MsgBox(s1) ' Дава nothing
' s2 е нов низ (new string)
MsgBox(s2) ' Дава "String 2"
Дерзай!
-
VB Типове данни (Data Types): Обобщение
Eто
списък на типовете данни, поддържани от VB .NET, с принадлежащия им .NET тип, обем,
и диапазон:
Boolean
.NET
CTS Тип : System.Boolean
Тип :
Value (Structure)
Обем :
2 bytes
Обхват
: True или False
Byte
.NET
CTS Тип : System.Byte
Тип :
Value (Structure)
Обем :
1 byte
Обхват
: от 0 до 255 (без знак)
Char
.NET
CTS Тип : System.Char
Тип :
Value (Structure)
Обем :
2 bytes
Обхват
: character от 0 до 65,535 (без знак)
Date
.NET
CTS Тип : System.DateTime
Тип :
Value (Structure)
Обем :
8 bytes
Обхват
: January 1, 1 CE до December 31, 9999
Decimal
.NET
CTS Тип : System.Decimal
Тип :
Value (Structure)
Обем :
12 bytes
Обхват
: +/-79,228,162,514,264,337,593,543,950,335 без десетична точка; +/-
7.9228162514264337593543950335 с 28 места вдясно от десетичната точка;
най-малкото ненулево число е +/-0.0000000000000000000000000001
Double
(double-precision floating point)
.NET
CTS Тип : System.Double
Тип :
Value (Structure)
Обем :
8 bytes
Обхват
: -1.79769313486231E308 до -4.94065645841247E-324 за отрицателни
стойности; 4.94065645841247E-324 to 1.79769313486232E308 за положителни
стойности
Integer
.NET
CTS Тип : System.Int32
Тип :
Value (Structure)
Обем :
4 bytes
Обхват
: -2,147,483,648 до 2,147,483,647
Long (long integer)
.NET
CTS Тип : System.Int64
Тип :
Value (Structure)
Обем :
8 bytes
Обхват
: -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807
Object
.NET
CTS Тип : System.Object
Тип :
Reference (Class)
Обем :
4 bytes
Обхват
: всеки тип може
да се съхрани в обектна променлива.
Short
.NET
CTS Тип : System.Int16
Тип :
Value (Structure)
Обем :
2 bytes
Обхват
: -32,768 до 32,767
Single (single
precision floating point)
.NET
CTS Тип : System.Single
Тип :
Value (Structure)
Обем :
4 bytes
Обхват
: -3.402823E38 до -1.401298E-45 за отрицателни стойности; 1.401298E-45 до
3.402823E38
за положителни стойности
String
(variable-length)
.NET
CTS Тип : System.String
Тип :
Reference (Class)
Обем : 10 bytes + (2 * дължината на стринга)
Обхват
: 0 до 2 билиона Unicode characters
User-Defined Тип (structure)
.NET
CTS Тип : (наследява от System.ValueТип )
Тип :
Value (Structure)
Обем : Сума от размерите на членовете си
Обхват
: всеки член на
структурата има диапазон определен от неговия тип данни и в зависимост от
диапазона на останалите членове.
Запомнете,
че
CTS типовете данни са или
структури (value types) или
класове (reference types ) и са
локализирани в системното пространство от имена --
.NET System namespace.
-
Прости типове данни във Visual Basic
Простите
типове данни могат да се разделят в групи както следва:
Numeric data Тип
Тип
данни, чието подмножество са числата и за което операциите включват
аритметически операции.
Integer data Тип
Числов Тип данни, чието подмножество са целите
числа. (както можем
да се уверим, VB има няколко такива типа.)
Floating-point data
Тип
Нечислов Тип данни, чието подмножество са
рационалните числа.
Boolean data Тип
Тип
данни, чието подмножество има основа 2. {True, False}.
Character data Тип
Тип
данни, чието подмножество са символите (characters).
Да
разгледаме Visual Basic .NET типовете данни индивидуално.
1 Boolean data Тип
Boolean Типът данни e 16-битов и може да представлява две
стойности: True и False. Ключовите думи на VB True и False са използвани да присвоят тези стойности на булевите променливи.
Всяко
число конвертирано в булево, дава True, а нулата се конвертира във False. Обратно - False се конвертира в 0, а True
в -1.
(За C, C#, и C++, True е 1).
2 Byte data Тип
Типът
данни
Byte e 8-битов, без знак, цели числа в
диапазона от 0 до 255.Само операторите за преместване третират този тип като двоичен "binary data". Подтип на байт е
System.Byte.
3 Char data Тип
Типът
данни
Char e 16- битов символен тип с код на
символите
от 0 до 65,535, който има Unicode вид.Char e нов за VB .NET; не е важно
да противопоставяме Char на String Типът данни "String data Тип " не е
същия като Char. Примерно в по-раншните версии на VB, за да имаме
"AAAAA." трябваше да запишем така:
Dim s As String
s = String$(5, "A")
Във VB
.NET, това се прави чрез стринговия конструктор (String class constructor),
който има следния синтаксис:
Dim variable As New String(Character, Integer)
Ако
използваме команда Option Strict On в кода:
Dim s As New String("A"c, 5)
трябва
да укажем
Char, като добавим накрая на стринговия
литерал c.
Подтип
на
Char e System.Char.
4 Date data Тип
Стойностите
за дата се съхраняват като IEEE 64-бита дълги цели числа (long
integers), които могат да представят дати от January 1, 0001 до
December 31, 9999, и време от 0:00:00 до 23:59:59.
Литерали
стрингове трябва да се затварят в знаци за число (#) , за да се
разпознаят като дати. Компилаторът VB .NET сменя формата на датата
автоматично. Ако въведем следния код:
Dim d As Date
d = #November 9, 1948#
Msgbox(d)
компилаторът
сменя втория ред на:
d = #11/9/1948#
или
каквито са регионалните условия на системата. Eквивалента .NET дата (
Date) e System.DateTime.
5 Decimal data Тип
Типът
данни
Decimal се съхранява като 96-бита (12-байта) цяло число със знак (автоматична скала от 0 до 28) за десетична променлива.
Може
да се използват цели числа -
integers (без десетична част) в диапазона:
+/-79,228,162,514,264,337,593,543,950,335
(скала 0).
Може
да се използват стойности в диапазона:
-7.9228162514264337593543950335 до -0.0000000000000000000000000001
за
отрицателните, или:
0.0000000000000000000000000001 до 7.9228162514264337593543950335
за
положителните. В този случай, скалата е 28.
За да
запишем литерал
Decimal, трябва да завършим с D, така:
123456.789D
Типовият
идентификатор за
Decimal е символ @:
Dim dec@
.NET
подтип на Decimal е System.Decimal. Този клас има някои много полезни члена,
като MaxValue и MinValue, които дават максималната и минимална стойност на
десетичния тип.
6 Double data Тип
Стойности
Double са IEEE 64-битови (8-байта) числа
с плаваща-запетая в диапазона:
-1.79769313486231E308 до -4.94065645841247E-324 за отрицателните, или
4.94065645841247E-324
до 1.79769313486232E308 за положителните.
За да
запишем литерал Double, трябва да завършим с R, така:
12345.678R
Типовият
идентификатор за
Double е символ #:
Dim dbl#
.NET
подтип на Double e System.Double.
7 Integer data Тип
Типът
данни
Integer е 32-битов за целочислени числа със знак в диапазона:
-2^31 до 2^31-1 или:
-2,147,483,648 до 2,147,483,647
Това е
естествената дължина на думата за 32-битови процесори.
За да
запишем литерал
Integer, трябва да завършим с I, така:
123I
Типовият
идентификатор за Integer е знакът за процент (%):
Dim int%
.NET подтип на Integer e System.Int32.
8 Long data Тип
Типът
данни
Long e 64- битов за целочислени числа със знак в диапазона:
-2^63 to 2^63-1 или:
-9,223,372,036,854,775,808 до 9,223,372,036,854,775,807
За да
запишем литерал
Long, трябва да завършим с L, така:
123L
Типовият
идентификатор за
Long е амперсанд (&), така:
Dim lng&
.NET
подтип на Long e System.Int64.
9 Object data Тип
Типът
данни
Object е указателен тип данни. Стойността
на типа
Object е адреса на обекта в паметта. Във
VB .NET, типът
Object data Тип е универсален; променливата
Object може да сочи (point to) данни от
всеки друг тип. Например следния код поставя стойност
Long в променлива
Object:
Dim obj As Object
obj = 123L
.NET
подтип на
Object e
System.
Object.
Ценно
е да се отбележи, че когато използваме променлива от тип
Object, ние плащаме данък на преобразуванията, защото VB .NET не може да свърже заявките на
обектния метод с актуалния код на метода по време на изпълнение (runtime).
Нарича
се
късно
свързване - late binding. От друга страна, декларирането на променливите с
техния обектен тип позволява по-ранно свързване по време на компилация, което е
много ефективно. Така например кодът:
Dim obj As Object
. . .
obj.AMethod
е
по-ефективен от:
Dim obj As System.Data.DataSet
. . .
obj.AMethod
Обектният
тип данни е универсален. Във VB .NET можете да използвате функция
VarТип да определите подтипа данни на обекта.
За
сравнение, класът
Object class в пространството от имена - System namespace на библиотека Base Class Library има метод Gettype , който
връща обекта на типа. Ако
obj е променлива от тип
Object, то:
obj.Gettype
връща
типа обект. Класът
Type class, който също е член на Base Class Library's System namespace, притежава два метода връщащи
информация за подтипа на обекта:
· ToString връща стринг, описващ подтипа на
данните. Точен
еквивалент е на функция VB .NET
Type Name, с изключение на това,че първия
метод използва името на типа данни от .NET Base Class Library, докато функцията
използва Visual Basic име.
· GetType Code връща броя (enumeration value) от Type Code преброяване. Точен еквивалент на функция VB6
VarType , която не се поддържа от VB .NET.
Следният
код генерира стойностите в Таблица 2-1:
Dim obj As Object
obj = ???
debug.write(obj.GetType .ToString)
Debug.Write(Type Name(obj))
debug.writeline(Type .GetType Code(obj.GetType ))
Taблица 1. Стойности от ToString и GetType Code
obj = ??? | ToString | Тype
Name | GetТype |
obj
= True | System.Boolean | Boolean | 3 |
obj
= CByte(100) | System.Byte | Byte | 6 |
obj
= #1/1/2000# | System.DateTime | Date | 16 |
obj
= CDbl(100) | System.Double | Double | 14 |
obj
= CInt(100) | System.Int32 | Integer | 9 |
obj
= CLng(100) | System.Int64 | Long | 11 |
obj
= CShort(100) | System.Int16 | Short | 7 |
obj
= CDec(100) | System.Decimal | Decimal | 15 |
obj
= CSng(100) | System.Single | Single | 13 |
obj
= "Donna" | System.String | String | 18 |
10 Short data Тип
Типът
данни
Short e 16- битов за целочислени числа със знак в диапазона:
-2^15
до 2^15-1
или:
-32,768
до 32,767
За да
запишем литерал
Short, трябва да завършим с S, така:
123S
.NET подтип
на
Short e System.Int16.
11 Single data Тип
Типът
данни
Single са IEEE 32- битови (4-байта) числа с плаваща запетая в
диапазона:
-3.402823E38 до -1.401298E-45 за отрицателни, и:
1.401298E-45 до 3.402823E38 за положителни числа.
За да
запишем литерал
Single, трябва да завършим с F (floating point), така:
12345.678F
Типовият
идентификатор за
Single е знакът за удивителна (!):
Dim sng!
.NET
подтип на
Single e System.Single.
12 String data Тип
Типът
данни
String представя стрингове в Unicode до 2 билиона знака.
Типовият
идентификатор за
String e знака за долар ($).
Dim str$
.NET подтип на стрингов тип данни е System.String.
Пример:
Dim sName As String
sName = "Ivana"
или
еквивалентно в един ред:
Dim sName As String = "Ivana"
13 Структурирани типове данни - потребителски дефинирани
типове (Structure data type : user-defined types)
Във VB .NET, типът данни
Structure Type e мощен с много свойства в общност
с класовете.
Структурата
(structure) ви позволява да създадете свой
собствен тип данни. Структурата съдържа един или повече членове, които могат да бъдат
от същия или от различен тип данни. Всеки член на структурата има име, с което се свързвате с
него индивидуално. В предишните версии на Visual Basic, структурите се представяха с ключова дума
Type . Във Visual Basic .NET, ключова дума
Structure се използва за дефиниране на
структура. Синтаксис:
[Public|Private|Friend] Structure varname
NonMethod member Declarations
Method member declarations
End Structure
Следващият
примерен код демонстрира как се дефинират структури във Visual Basic 6.0 и как
във Visual Basic .NET. Забележете, че сега обсега на действие (scope) се дава
на членовете. В примерите, сме използвали само инструкция
Dim. Пример за Visual Basic 6.0:
Type Employee
No As Long
Name As String
Address As String
Title As String
End Type 'Employee
Във
Visual Basic .NET, структурите се декларират така:
Structure Employee
Dim No As Long
Dim Name As String
Dim Address As String
Dim Title As String
End Structure 'Employee
Нека
да видим как се използват структурите програмно.Примерът е за данни за
"служител" (employee). Данните за "служител" са една отделна
единица, но може да
искате да се свържите индивидуално с членовете. Ако го направите с
индивидуалните променливи, то направете го така:
Dim emp1 As Employee
Dim emp2 As Employee
emp1.No = 12345
emp1.Name = "Cameron Wakefield"
emp1.Address = "123 Somewhere in Bourgas."
emp1.Title = "President"
emp2.No = 12346
emp2.Name = "Lorraine Wakefield"
emp2.Address = "123 Somewhere in Bourgas."
emp2.Title = "Vice President"
Структурите
се свързват по стойност (value), не по референтна връзка (reference). Ако променлива на структурата се
присвои на друга променлива, структурата ще бъде копирана в новата променлива.
www.syngress.com
Членове
на стурктурата могат да бъдат променливи -
variables, свойства -
properties, методи -
methods, или събития -
events. Запомнете, че всеки член трябва да бъде деклариран със
модификатор за достъп: Public (или Dim), Private, или Friend.
Най-често
структурите се използват за капсулиране на свързани променливи. Пример:
Structure strPerson
Public Name As String
Public Address As String
Public GradSelo As String
Public Oblast As String
Public PKOD As String
Public Vuzrast
As Short
End Structure
За да
дефинираме променлива strPerson, пишем (обикновено):
Dim APerson As strPerson
За да
имаме достъп до член от структурата, използваме синтаксиса:
APerson.Name = "Beethoven"
Членове
на структурата могат да са други структури или други обекти.
Структурите могат да се подават
като аргументи към функции или да се връщат от функции.
Те са
подобни на класовете. Разгледайте следната структура:
Structure strTest
'A public nonmethod member
Public Name As String
'A private member variable
Private msProperty As String
'A public method member
Public Sub AMethod( )
Msgbox("Structure method. Property is: " &
msProperty)
End Sub
'A public property member
Public Property AProperty( ) As String
Get
AProperty = msProperty
End Get
Set
msProperty = Value
End Set
End Property
End Structure
Сега
можем да определим свойство на струкурата и да извикаме неин метод:
Dim str As strTest
str.AProperty = "Donna"
str.AMethod( )
Макар
че са подобни на класове, структурите не поддържат следното:
· Structures не могат изрично да наследяват, нито могат да бъдат наследени.
· Конструкторите
за структури трябва да бъдат с параметри.
· Структурите не могат да дефинират деструктори.
· Декларациите
на членовете не могат да включват инициализации нито могат да използват As New синтаксиса за спесифициране на размер на масив.
-
Конвертиране на типовете данни - (Data
Тип Conversion)
Конвертирането
на типове се нарича
конверсия -
conversion или
кастинг -
casting. Операторът (
cast operator) може да бъде дoбавен към стойността на литерала
или към променливата от даден тип. Например:
Dim lng As Long
Dim int As Integer = 6
' Конвертиране (Cast) на Integer променлива в Long
lng = CLng(Int)
' Конвертиране (Cast) на integer литерал в Long
lng = CLng(12)
Оператор
Сast може да бъде
разширяван и стесняван. Разширения оператор (
widening cast) извършва
конверсията в другия, целевия тип данни, който може да поеме всички стойности на
типа източник, като кастинг от
Short в
Integer или от
Integer в
Double. Не се губят данни и не се генерира грешка. Тесният
оператор
(narrowing cast) извършва конверсията в другия, целевия тип
данни, който не може да поеме всички стойности на типа източник. В този случай могат
да се загубят данни и може конверсията да не e успешна. Под VB .NET, конверсиите се
правят по два начина:
косвен (implicitly) и
пряко (explicitly).
Косвена конверсия (
implicit conversion) имаме при компилиране, когато
обстоятелствата го налагат.
Примерно:
Dim lng As Long
lng = 54
компилаторът
преобразува цялото число 54 в Long.
Типът на
косвената
конверсия, компилаторът избира в зависимост от стойностите в Option Strict. Примерно ако Option Strict е On, само разширено
преобразуване може да е косвено; Например кода:
Dim b As Boolean
b = "True"
генерира
грешка от конверсия на типовете, но ако добавим реда:
Option Strict Off
в
началото на модула, предния код се изпълнява без грешка.
Пряката конверсия - Explicit conversion изисква изрично викане
на конвертиращата функция (или cast operator). Всички конвертиращи типовете функции, поддържани от VB .NET имат следната форма:
Cname(expression)
където
expression е изръзът който е в диапазона на
целевия тип данни. Имаме следните конвертиращи функции:
CBool
Конвертира всеки валиден
String или
числов израз в булев (
Boolean).
CByte
Конвертира всеки валиден
числов израз в диапазона от 0 до 255 в
Byte, закръглявайки всяка
дробна част.
CChar
Взема
стрингов аргумент и
връща първия символ от стринга като тип
Char
data Тип .
CDate
Конвертира всеки валиден запис на
дата
и време в тип
Date.
CDbl
Конвертира всеки валиден запис на число в диапазона
Double в тип
Double.
CDec
Конвертира всеки валиден запис на число в диапазона
Decimal в тип
Decimal.
CInt
Конвертира всеки валиден числов израз в диапазона от (-2,147,483,648 до 2,147,483,647) в тип
Integer, закръглявайки всяка дробна
част.
CLng
Конвертира всеки валиден запис на число в диапазона
Long в тип
Long, закръглявайки всяка
дробна част.
CObj
Конвертира всеки валиден израз, който може да се интерпретира като обект в тип
Object. Например:
Dim obj As Object
obj = CObj("test")
преобразува стринга
"test" в тип
Object и го разполага в
обектната променлива
obj.
CShort
Конвертира всеки валиден числов израз в диапазона от -32,768 до 32,767 в тип
Short, закръглявайки всяка дробна част.
CSng
Конвертира всеки валиден запис на число в диапазона
Single в тип
Single.
Ако числовият израз е извън диапазона на
Single, възниква грешка.
CStr
Ако входният израз за
CStr e
Boolean, функцията връща
"True" или "False." За израз, който може да се интерпретира като дата
функцията връща дата, с формат според регионалната система. За числов израз,
върнатата стойност е стринг представящ числото.
CТype
Генерално
представената конвертираща функция,
CТype има следния синтаксис:
CТtype (expression, Тype name)
където
expression е израз или променлива, а
Тype name е типа данни в който ще се конвертира.