Логические операторы. Массивы.
Начиная с бета-версии 2 логические операторы (Not, And, Or и т. д.) работают на уровне двоичных разрядов, как и в прежних версиях VB. Допустим, у вас имеются два целых числа X и Y. Каждый бит результата X And Y равен 1 лишь в том случае, если равны 1 соответствующие биты обоих операндов; в противном случае бит результата равен нулю. Таким образом, при вычислении результата X And Y вычисляется каждый бит 32-разрядного целого числа. Пример:
X = 7 'В двоичном представлении = 0111 Y = 12 'В двоичном представлении = 1100
Выражение X And Y в двоичной системе равно 0100 (4 в десятичной системе), поскольку лишь во второй позиции оба бита равны 1. Остальные биты результата равны 0, поскольку в этих позициях хотя бы один из битов операндов равен 0. Этот способ позволяет проверить значения отдельных битов целого числа. Примеры:
(X And 1) = 1: проверить, установлен ли младший бит числа. (X And 2) о 2: проверить, установлен ли предпоследний бит числа (поскольку в 'двоичной системе число 2 представляется записью 10). X And 255: младший байт числа (255 дес. = 11111111 дв.). X And 65280: старший байт числа (65280 дес. = 1111111100000000 дв.).
Значение, предназначенное для проверки отдельных битов числа, называется маской (mask).
Массивы
В VB.NET имена массивов должны подчиняться тем же правилам, что и имена переменных. Ссылка на элемент массива выглядит как имя массива, за которым в круглых скобках указывается индекс.
Массивы VB.NET во многом отличаются от массивов VB6. Одни изменения видны сразу, другие не столь очевидны. Наиболее заметные изменения перечислены ниже.
Индексация-элементов в массивах начинается с 0. На момент написания книги ключевое слово То не поддерживалось – будем надеяться, что оно еще вернется!
Начиная с бета-версии 2 объявление 01m stringList(7) создает массив из восьми элементов с индексами от 0 до 7. Поскольку в VB.NET индексация всегда начинается с нуля, третий элемент массива обозначается stringList(2), а предшествующие элементы обозначаются stringList(0) и stringList(1).
Все массивы VB.NET являются динамическими. Во время работы программы их можно переобъявить с новым размером при помощи команд ReDim (с потерей текущего содержимого) и ReDim Preserve (с сохранением текущего содержимого). Пример:
Dim x() As Single ReDim x(20) ' Начиная с бета-версии 2. создает массив из 21 элемента ReDim Preserve x(50) ' 21 элемент сохраняется в массиве.
Примечание
Команда ReDim не позволяет изменять тип массива; также не допускается использование ReDim при объявлении. Перед вызовом ReDim массив должен быть объявлен при помощи Dim или аналогичной команды.
Массивы могут инициализироваться при объявлении, как показывает следующий пример:
Dim weekend() As String = {Saturday. Sunday}
Менее очевидные изменения обусловлены тем, что массивы VB.NET являются экземплярами класса Array. Подробности будут рассмотрены в главе 4, а пока достаточно указать, что это позволяет выполнять операции с массивами вызовом методов класса Array. Ниже продемонстрирован пример сортировки массива методом Sort:
Sub Main() Dim stuff() As Integer = (9. 7, 5, 4, 2. 1, -37, 6} Array.Sort(stuff) Dim i As Integer For i = 0 To UBound(stuff) Console.WriteLine(stuff(i)) Next Console. ReadLine() End Sub
Программа выводит массив, отсортированный с применением чрезвычайно эффективного алгоритма "быстрой сортировки".
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение
Примечание
VB.NET наследует от .NET Framework некоторые очень полезные структуры данных, возможности которых выходят далеко за рамки обычных массивов. На фоне этих структур коллекции VB5 и последующих версий выглядят примитивно. В частности, списковые массивы (с динамически изменяемыми размерами) и ассоциативные массивы (с доступом к данным по ключу) часто оказываются удобнее обычных массивов. Многие из новых структур данных рассматриваются в главах 5 и 6.