:: Меню ::

Головна
  • Про сайт
  • Введення
  • Середовище програмування VB .NET: Visual Studio .NET
  • Вирази, оператори і передача управління
  • Класи і об'єкти
  •  Спадкоємство і інтерфейси
  • Обробка подій і делегати
  • Обробка помилок в VB .NET
  • Форми Windows, графічний вивід і друк
  • Уведення-виведення
  •  Багатопотокові застосування
  • Підтримка баз-даних в VB .NET
  • Короткий огляд ASP .NET
  • Складки .NET, установка додатків і COM Interop
  • Книга для гостей
    Контакти
    Добавити у вибране

    :: Друзі ::

     
     

    :: Лічильники ::

    = =

     

     

     

     

    Оголошення змінних

    У VB .NET, як і в Vb6, змінні оголошуються в процедурах і функціях за допомогою ключових слів Dim і As, а привласнення виконується знаком =:

    Dim foo As String

    foo = "bar"

    Якщо ви не змінювали стандартне налаштування VB .NET, змінні повинні оголошуватися перед використанням (режим Option Explicit, вперше представлений в Vb4, тепер використовується за умовчанням). У VB .NET підтримується ініціалізація змінних при оголошенні. Приклад:

    Dim salestax As Decimal = 0.0825d

    Команда оголошує змінну з ім'ям salestax і привласнює їй початкове значення 0.0825 типу Decimal. При ініціалізації можуть використовуватися будь-які синтаксично правильні вирази VB .NET. Наступна команда привласнює змінною startangle вбудоване значення математичної константи п, використовуючи для цього константу класу System. Math: Dim startangle As Decimal - Math.PI

    Якщо змінна не ініціалізувала при оголошенні, їй привласнюється стандартне значення, відповідне її типу, — наприклад, числовим змінним привласнюється 0. При такому зручному синтаксисі, як в VB .NET, завжди краще ініціалізувати змінну при оголошенні, чим покладатися на значення за умовчанням. У наступному фрагменті використовується оператор &, що застосовувався в Vb6 для конкатенації рядків:

    Sub Main()

    Dim salestax As Decimal = 0.0825d

    Dim state As String = "California"

    Console.WriteLine("The sales tax in " & state & " is " & salestax)

    Console. Readline()

    End Sub

    Програма виводить наступний результат:

    The sales tax in California is 0.0825

    На відміну від попередніх версій VB, оголошення декілька змінних в одному рядку програми працює саме так, як підказує здоровий глузд. Інакше кажучи, наступна команда оголошує три змінні: i, j і до, Integer, що відносяться до типу:

    Dim i, j, до As Integer

    При одночасному оголошенні декілька змінних ініціалізація виконуватися не може, тому наступний рядок недопустимий:

    Dim i, j, до As Integer = 1

    Як і в колишніх версіях VB, замість вказівки типу з ключовим словом As може використовуватися суфікс типу. Наприклад:

    Dim i%, myname$

    Приведена команда оголошує змінну i типу Integer (аналог Long в старому VB) і змінну myname типу String. Програмістам VB .NET поступати так само не рекомендується.

    Всі програмісти добре пам'ятають, які жаркі дискусії проходили з приводу угод про імена змінних. Існує складна система префіксів (так званий угорський запис), що дозволяє з першого погляду визначити тип змінних. Згідно загальним рекомендаціям програмування для .NET Framework застосування угорського запису небажане. Ми слідуватимемо цим рекомендаціям, і в книзі префікси зустрічаються дуже рідко.

    Команди сімейства Deftype (наприклад, Deflnt) в VB .NET не підтримуються.

    Перетворення різнотипних значень

    На думку багатьох програмістів, колишні версії Vb6 дуже ліберально відносилися до перетворення типів. В результаті виникало явище «злісного спотворення типів» — скажімо, Vb6 дозволяв помножити строкове представлення числа на Integer.

    У VB .NET передбачений режим жорсткої перевірки типів Option Strict. Щоб активізувати його, включите наступну команду в початок програми (також можна скористатися прапорцем Strict Type Checking на вкладці Build діалогового вікна Project Properties):

    Option Strict On

    При активізації цього режиму (а це слід робити завжди!) VB .NET вимагає, щоб будь-які перетворення типів, які можуть привести до втрати даних, виконувалися явно. Наприклад, при перетворенні Single до типу Integer може відбутися втрата точності, оскільки тип Integer не дозволяє представити весь інтервал допустимих значень типу Single. З іншого боку, якщо втрата даних виключена (скажімо, при перетворенні Integer в тип Long або Decimal), VB .NET виконує перетворення автоматично. У документації VB .NET перетворення без втрати даних називаються розширяльними перетвореннями (widening conversions). У таблиці. 3.3 переділені допустимі розширяльні перетворення для базових типів даних.

    Таблиця 3.3. Допустимі розширяльні перетворення для базових типів VB .NET

    Тип
    Допустиме розширення
    Byte Byte, Short, Integer, Long, Decimal Single, Double
    Short Short, Integer, Long, Decimal, Single, Double
    Integer Integer, Long, DECIMAL Single, Double
    Long Long, DECIMAL Single, Double
    Single Single, Double
    Date Date, String

    Більш того, при активному режимі жорсткої перевірки типів ви не зможете використовувати конструкції вигляду:

    Dim foo As Boolean

    foo = 3

    У цьому фрагменті логічної змінної foo значення True привласнюється у вигляді ненульового числа (у Vb6 це було цілком поширеним явищем). Подібні перетворення повинні виконуватися явно:

    Dim foo As Boolean

    foo =СВооl(З)

    VB .NET автоматично виконує перетворення між символьним типом і рядком, що складається з одного символу.

    За бажання ви можете повернутися до доісторичних часів і відмовитися від жорсткої перевірки типів. Для цього досить почати модуль з наступної команди:

    Option Strict Off

    Втім, поступати так само не рекомендується.

    Якщо вміст змінної одного типу може бути перетворене до іншого типу, можна скористатися функцією явного перетворення, як в тільки що приведеному прикладі зі Свооl. Функції явного перетворення типів перераховані в таблиці. 3.4.

    Таблиця 3.4. Функції явного перетворення типів

    Функція
    Опис
    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 необхідно враховувати деякі нюанси. За додатковою інформацією звертайтеся до розділу «Математичні оператори».

    Рядки

    Строкова змінна містить текст в кодуванні Unicode завдовжки до 231 (більше 2 мільярдів!) символів. Як було показано вище, значення строкового типу полягають в лапки:

    Dim message As String

    message = "Help"

    Конкатенація (об'єднання) рядків зазвичай виконується оператором &. Старий варіант з оператором + теж працює, але при відключенні жорсткої перевірки типів він може викликати серйозні проблеми, тому використовувати знак + при конкатенації не рекомендується. Старий спосіб ідентифікації строкових змінних з суфіксом $ (наприклад, astringvariables) іноді використовується для тимчасових змінних.

    У VB .NET строкові змінні не відносяться до базового типу, а є екземпляра-мі класу String. Деякі нюанси, пов'язані з їх застосуванням, будуть розглянуті в розділі 4, а поки ми згадаємо лише одну особливість, про яку необхідно знати для ефективної роботи з рядками в VB .NET: при будь-якій модифікації рядка в VB .NET створюється новий екземпляр рядка. Часта модифікація рядка вимагає великих витрат ресурсів, тому в VB .NET є клас Stringbuilder для виконання подібних операцій (наприклад, вибірки даних з буфера і об'єднання їх в строковій змінній).

    На відміну від попередніх версій VB, в VB .NET не підтримуються рядки фіксованої довжини.

    Строкові функції

    У вашому розпорядженні залишилися всі класичні строкові функції Vb6 (Left, Right, Mid і т. д.), але версії цих функцій з суфіксом $ тепер не підтримуються. У таблиці. 3.5 перераховані найважливіші функції класу String, замінюючі строкові функції Vb6. Не забувайте, що при багатократній модифікації рядків (наприклад, при виклику Mid в циклі) слід використовувати клас Stringbuilder, описаний в розділі 4. Деякі з приведених методів використовують масиви, які будуть розглянуті нижче в цьому розділі.

    При програмуванні для .NET рекомендується по можливості використовувати методи і властивості класу Stri ng, що входить в .NET Framework. Найпоширеніші строкові методи перераховані в таблиці. 3.6.

    Таблиця 3.5. Основні строкові функції

    Функція
    Опис
    Asc
    Повертає код першого символу в рядку
    Chr
    Перетворить число в символ Unicode
    Filter
    Отримує строковий масив і шуканий рядок; повертає одновимірний масив всіх елементів, в яких був знайдений заданий текст
    Getchar
    Повертає символ рядка із заданим індексом у форматі Char. Індексація символів починається з 1. Наприклад, команда Getchar("Hello",2) повертає символ «е» у вигляді типу Char
    Instr
    Повертає позицію першого входження одного рядка в іншому рядку
    Instrrev
    Повертає позицію останнього входження одного рядка в іншому рядку
    Join
    Будує великий рядок з менших рядків
    Lcase
    Перетворить рядок до нижнього регістра
    Left
    Знаходить або видаляє задану кількість символів від початку рядка
    Len
    Повертає довжину рядка
    Ltrim
    Видаляє пропуски на початку рядка
    Mid
    Знаходить або видаляє символи в рядку
    Replace
    Замінює одне або більш за входження одного рядка в іншому рядку
    Right
    Знаходить або видаляє задану кількість символів в кінці рядка
    Rtrim
    Видаляє пропуски в кінці рядка
    Space
    Генерує рядок заданої довжини, що складається з пропусків
    Split
    Дозволяє розбивати рядок по заданих роздільниках (наприклад, пропускам)
    Str
    Повертає строкове представлення числа
    Strcomp
    Альтернативний спосіб порівняння рядків
    Strconv
    Перетворить рядок з однієї форми в іншу (наприклад, із зміною регістра)
    String
    Створює рядок, що складається з символу, що багато разів повторюється
    Trim
    Видаляє пропуски на початку і кінці рядка
    Ucase
    Перетворить рядок до верхнього регістра

    Таблиця 3.6. Основні строкові методи і властивості .NET Framework

    Метод/властивість Опис
    Chars Повертає символ, що знаходиться в заданій позіциі рядки
    Compare Порівнює два рядки
    Copy Копіює існуючий рядок
    Copy To Копіює задану кількість символів, починаючи в задану позицію масиву символів
    Empty Константа, що представляє порожню рядок
    Endswith Перевіряє, чи завершується заданий рядок певною послідовністю символів
    Indexof Повертає індекс першого входження підрядка в заданому рядку
    Insert
    Повертає новий рядок, отриманий вставкою підрядка в задану позицію
    Join
    Об'єднує масив рядків із заданим роздільником
    Lastlndexof
    Повертає індекс останнього входження заданого символу або підрядка в рядку
    Length
    Повертає кількість символів в рядку
    Padleft
    Вирівнює символи рядка по правому краю. Рядок доповнюється зліва пропусками або іншими символами до заданої довжини
    Padright
    Вирівнює символи рядка по лівому краю. Рядок доповнюється справа пропусками або іншими символами до заданої довжини
    Remove
    Видаляє з рядка задану кількість символів, починаючи із заданої позиції
    Replace
    Замінює всі входження підрядка іншим підрядком
    Split
    Розбиває рядок, перетворюючи її на масив підрядків
    Starts With
    Перевіряє, чи починається заданий рядок певною послідовністю символів
    Substring
    Повертає підрядок, що починається із заданої позиції
    Tochararray
    Копіює символи рядка в символьний масив
    Tolower
    Повертає копію рядка, перетворену до нижнього регістра
    Toupper
    Повертає копію рядка, перетворену до верхнього регістра
    Trim
    Видаляє пропуски або всі символи з набору, заданого у вигляді масиву символів Unicode, на початку і кінці рядка
    Trimend
    Видаляє пропуски або всі символи з набору, заданого у вигляді масиву символів Unicode, в кінці рядка
    Trimstart
    Видаляє пропуски або всі символи з набору, заданого у вигляді масиву символів Unicode, на початку рядка

    На відміну від Vb6, де індексація символів в рядку починалася з 1, в методах .NET Framework індекс першого символу дорівнює 0.

    Оскільки в .NET Framework рядка є об'єктам, синтаксис виклику цих методів достатньо логічний і зручний. Виконаєте наступну програму:

    Sub Main()

    Dim river As String =" Mississippi Missippi"

    'один пропуск зліва

    Consol e. Wri teli ne( ri ver. Tollpper ())

    Console.Wri teli net ri ver.ToLower())

    Console.WriteLineCriver.Trim())

    Console. Writelinetri ver. Endswith("I"))

    Consol e.Wri teli ne З ri ver.EndsWith("i"))

    Console.WriteLine(river.IndexOf("s"))

    'Індексація починається з 0!

    Console.WriteLineCriver.Insert(9. " river"))

    'Індексація

    ' починається з 0!

    Consol e.ReadLine() End Sub

    Результат виглядає так:

    MISSISSIPPI MISSIPPI

    mississippi missippi

    Mississippi Missippi

    False

    True

    3

    Mississi riverppi Missippi

     




    :: Наша кнопка ::

    Отримати код:

    Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


    :: Реклама ::

    Скачати безкоштовно програму Microsoft Front Page 2003


    :: Посилання ::

    -


     

     

     


    Copyright ©