Переменные и присваивание
Имена
переменных в VB .NET имеют длину до 255
символов и обычно начинаются с
буквы в кодировке Unicode (за
дополнительной информацией о Unicode
обращайтесь на сайт www.unicode.org), хотя также допускается символ подчеркивания. Далее следует произвольная комбинация букв, цифр и символов подчеркивания. Все символы имени являются значимыми, но регистр символов игнорируется (как вообще в VB .NET); считается, что firstBase и firstbase — одна и та же переменная. Присваивание выполняется при помощи знака =, как и в более ранних версиях VB:
theYear
= 2001
Имена переменных не могут совпадать с последовательностями, зарезервированными VB .NET (список для текущей версии приведен в табл. 3.1), однако это ограничение можно обойти, заключив имя переменной в квадратные скобки. Например, переменная не может называться Loop, а имя [Loop] подойдет — хотя делать это не рекомендуется. Зарезервированные слова внутри имен переменных допустимы (скажем, loopit — вполне нормальное имя). При попытке использования ключевого слова в качестве имени переменной VB .NET подчеркивает его и информирует об ошибке (при помощи экранной подсказки).
Таблица 3.1. Ключевые
слова текущей версии VB .NET
AddHandler |
AddressOf |
Alias |
And |
Ansi |
As |
Assembly |
Auto |
Binary |
BitAnd |
BitNot |
BitOr |
BitXor |
Boolean |
ByRef |
Byte |
ByVal |
Call |
Case |
Catch |
CBool |
CByte |
CChar |
CDate |
CDec |
CDbl |
Char |
CInt |
Class |
CLng |
CObj |
Compare |
Const |
CShort |
CSng |
CStr |
Ctype |
Date |
Decimal |
Declare |
Default |
Delegate |
Dim |
Do |
Double |
Each |
Else |
Elself |
End |
Enum |
Erase |
Error |
Event |
Exit |
Explicit |
ExternalSource |
False |
Finally |
For |
Friend |
Function |
Get |
GetType |
GoTo |
Handles |
If |
Implements |
Imports |
In |
Inherits |
Integer |
Interface |
Is |
Lib |
Like |
Long |
Loop |
Me |
Mod |
Module |
Mustlnherit |
MustOverride |
MyBase |
MyClass |
Namespace |
Next |
New |
Not |
Nothing |
Notlnheritable |
NotOverridable |
Object |
Off |
On |
Option |
Optional |
Or |
Overloads |
Overridable |
Overides |
Pa ram Array |
Preserve |
Private |
Property |
Protected |
Public |
RaiseEvent |
Readonly |
Re Dim |
REM |
RemoveHandler |
Resume |
Return |
Select |
Set |
Shadows |
Shared |
Short |
Single |
Static |
Step |
Stop |
Strict |
String |
Structure |
Sub |
SyncLock |
Text |
Then |
Throw |
To |
True |
Try |
TypeOf |
Unicode |
Until |
When |
While |
With |
With Events |
WriteOnly |
Xor |
Литералы и их соответствие типам данных
Литералом называется
последовательность символов,
которая может интерпретироваться
как значение одного из примитивных
типов. Но с типами (даже
примитивными) в VB .NET дело обстоит
несколько сложнее, чем в более
ранних версиях VB.
Хотя
возможность непосредственной
интерпретации данных
предусмотрена в любом языке
программирования, решить, как
именно следует интерпретировать те
или иные данные, иногда бывает
непросто. Наверное, все согласятся
с тем, что 3 — это число 3 и его
следует интерпретировать именно
так. Но что такое число 3 с точки
зрения компилятора? Сколько байт
памяти следует под него выделить?
Теоретически для хранения числа 3
хватит 2 бит, но в современных
языках программирования обычно
происходит не так.
Итак,
компилятор должен
проанализировать литерал и принять
необходимые решения, поэтому вы
должны по возможности точнее
описать, что вы имеете в виду, не
полагаясь на разумность
компилятора. Вернемся к примеру с
простым числом 3. В VB .NET оно может
представлять собой (среди прочего):
- Байт:
фактически вы сообщаете
компилятору, что для хранения
числа следует выделить
минимальный объем памяти.
- Короткое
целое: старый тип Integer из VB6.
- Целое
.NET: старый тип Long из VB6 (компилятор
выделяет для хранения числа 4
байта).
К счастью,
символ 3 никогда не будет
автоматически интерпретироваться
как строковая константа (если не
переопределять стандартную логику
VB). В VB .NET строки и числа по
умолчанию не смешиваются — более
подробно эта тема рассматривается
в разделе «Преобразования
разнотипных значений» этой главы.
С точки зрения
компилятора простой констатации «это
число 3» недостаточно. Разумеется, VB
.NET, как и любой язык
программирования, позволяет
уточнить смысл литерала. Например,
31 — литерал типа Integer со значением 3,
а литерал "3" относится к
строковому типу String (тип String
рассматривается ниже в этой главе;
он несколько отличается от
строкового типа в прежних версиях VB).
В переменной,
объявленной с примитивным типом,
хранятся значения указанного типа.
Ниже перечислены примитивные
числовые типы VB .NET.
- Byte:
1-байтовое целое без знака в
интервале от 0 до 255.
- Short:
2-байтовое целое со знаком в
интервале от -32 768 до 32 767, аналог
типа Integer в прежних версиях VB.
Признаком типа Short в литералах
является суффикс S — например,
237S.
- Integer:
4-байтовое целое со знаком в
интервале от -2 147 483 648 до 2 147 483 647,
аналог типа Long в прежних
версиях VB. Признаком типа Integer в
литералах является суффикс I —
например, 2371.
- Long:
8-байтовое целое со знаком в
интервале от -9 223 372 036 854 775 808 до 9
223 372 036 854 775 807. Не имеет аналогов
в прежних версиях VB. Признаком
типа Long в литералах является
суффикс L — например, 2371.
Любой
целочисленный литерал можно
записать в шестнадцатеричной
системе счисления (по основанию 16),
для чего он снабжается префиксом
&Н. Например, литерал &HF
соответствует десятичному числу 15,
хранящемуся в формате Integer,
поскольку суффикс типа не указан, а
число входит в интервал допустимых
значений типа Integer. Числа,
записанные в восьмеричной системе
счисления (по основанию 8),
снабжаются префиксом &0.
При выполнении
операций с вещественными числами
используются следующие типы:
- Single:
4-байтовое вещественное число.
Признаком типа Single в литералах
является суффикс F — например, 1.23F
или 3F.
- Double:
8-байтовое вещественное число.
Если в числе с десятичной
точкой не указан суффикс, по
умолчанию оно сохраняется в
формате Double. Это связано с тем,
что Double работает эффективнее
Single; на 32-разрядных процессорах
Double является основным типом
для выполнения вещественных
операций. Признаком типа Double в
литералах является суффикс R (или
#).
Новый тип Decimal
пришел на смену старому типу Currency,
использовавшемуся в прежних
версиях VB. Он используется в
ситуациях, когда ошибки округления
недопустимы.
- Decimal:
12-байтовое вещественное число,
гарантирующее отсутствие
ошибок округления в громадном
интервале допустимых значений
с 28 значащими цифрами.
Формальное определение гласит,
что тип Decimal предназначен для
хранения чисел с мантиссой в
интервале ±79 228 162 514 264 337 593 543 950
335, масштабируемых до
произвольного порядка при
условии, что количество
значащих цифр не превышает 28.
Таким образом, наименьшее
число, представляемое типом
Decimal, равно ±0.0000000000000000000000000001.
Признаком типа Decimal в литералах
является суффикс D.
Применение
суффикса типа в литералах помогает
избежать путаницы и случайных
ошибок переполнения, возникающих
при умножении двух чисел. При
выполнении следующей команды:
Console.WriteLine(12345678
* 4567)
компилятор
выдает ошибку:
This constant expression produces a value that is not representable in type System.Integer.
Проблема решается при помощи суффикса типа Long:
Console.WriteLine(123456781
* 4567)
Общие методы
MaxValue и MinValue, ассоциированные с
типом, возвращают соответственно
верхнюю и нижнюю границы интервала
допустимых значений. Пример:
Console.WriteLine(Integer.MaxValue)
В табл. 3.2
собраны данные о соответствии
числовых типов VB .NET, типов .NET Framework и
их аналогов из VB6 (если они есть).
Таблица 3.2. Соответствие
между числовыми типами
Тип VB. NET |
Тип .NET
Framework |
Тип VB6 |
Byte |
System. Byte |
Byte |
Boolean |
System. Boolean |
Boolean |
Decimal |
System. Decimal |
— |
— |
— |
Currency |
Double |
System. Double |
Double |
Short |
System. Intl6 |
Integer |
Integer |
System.Int32 |
Long |
Long |
System.Int64 |
— |
Single |
System. Single |
Single |
Кроме числовых
литералов также существуют
литералы типов Boolean, Date и Char. Тип
данных Bool ean принимает значения True и
Fal se. В VB .NET он представляется 4
байтами (в отличие от 2 байт в VB6).
Тип данных Date
представляет дату и/или время. Как
ИГ в VB5, такие литералы заключаются
между символами #...# — например, #Jan 1.
2001#. Если время не указано),
предполагается, что литерал
соответствует полуночи указанной
даты.
Тип данных Char
представляет один символ Unicode.
Объем кодировки Unicode (65 536 символов)
вполне достаточен для
представления всех существующих
алфавитов. Обычно символ
заключается в кавычки, за которыми
следует префикс С (например, "Н"С),
но вы также можете воспользоваться
встроенной функцией Chr и указать
числовой код символа Unicode. Например,
запись Chr(&H2153) представляет
символ 1/3 кодировке Unicode, хотя в
некоторых операционных системах
этот символ не будет отображаться
во время работы программы. Если
заключить один символ в кавычки без
суффикса «С», вы получите тип Stri ng
вместо Char, а автоматическое
преобразование между этими типами
не поддерживается (команда Opti on Strict
описана ниже в этой главе).
Назад | Начало | Вперед |