C # і Visual Basic 6, Basic, Програмування, статті

Сартіна В’ячеслав, www.VBstep.ru

Введення

C # і Visual Basic 6 значно відрізняються від один від одного. C # – це 100% об’єктно-орієнтована мова, об’єктні можливості VB6 сильно обмежені. В втім Visual Basic.NET доповнює звичний нам VB новими об’єктними можливостями, настійно рекомендую ознайомитися з документацією по VB.NET.

Зовнішній вигляд програм

Як Ви знаєте блоки команд в Visual Basic завершуються оператором End і кілька блоків не можуть перебувати в одному рядку, наприклад, Ви не можете написати ось такий код:

If a = 0 Then a = 10 End If b = a

При спробі його виконати, Ви отримаєте повідомлення про помилку синтаксису. В C #, як в традиційному C / C + +, блоки операторів полягають у фігурні дужки “{}”, а положення і розриви рядків не істотні, так як вони завершуються крапкою з комою “;”. Для прикладу давайте розглянемо два варіанти написання циклу for, хоча перший варіант виглядає дуже потворно і погано читається, але за правилами C #, такий запис цілком допустима:

for (int a = 0; a < 10; a++) {if (a == 5) Func(a); else return;}
for (int a = 0; a < 10; a++) {
    if (a == 5)
        Func(a);
    else
        return;
}

Синтаксис C # майже не обмежує програміста, але при цьому значно зростає роль правильного стилю програмування.

Типи даних

Багато типів даних в VB і C # перекриваються, проте між ними існують важливі відмінності, до того ж однакові назви відносяться до різних типів.

Головна відмінність в тому, що при оголошення змінних, діють більш суворі правила. Всі змінні в C # повинні бути явно оголошені перед їх використанням, при чому з конкретним типом - так як в C # відсутній тип Variant. У місце Variant можна використовувати тип object - він здатний зберігати дані будь-якого типу, але тип збережених даних точно не відомий.

Змінні оголошуються простим зазначенням типу, аналога Dim не існує:

int  a = 10;
long b;

Перетворення

На перетворення типів накладаються серйозні обмеження. Перетворення типів діляться на дві категорії - явні і неявні. Чи не явними "implicit" називають перетворення, не призводять до втрати даних, тобто, при яких вихідне значення завжди поміститься в кінцевій змінної, наприклад:

int  a = 16384;
long b = a;

Присвоєння значення змінної "a" можливо, так як тип даних "int" менше "long".

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

long b = 16384;
int  a = (int) b;

Хоча в даному випадку, перетворення пройде без проблем, але "long" може вміщати в себе дуже великі числа, які не помістяться в "int", що робить необхідним явне оголошення типу.

Якщо Ви хочете запобігти переповнення, то включіть перевірку командою "checked":

checked {
    long   b = 262144;
    int    a = (int) b;
    Console.WriteLine("Result: {0}");
}

При виконання явних числових перетворень в контексті "checked" походить виняток, якщо початкове значення не поміщається в кінцевому.

Відмінності типів даних

У Visual Basic існує два цілочисельних типу: "Integer" і "Long". В C # вони замінені на "short" і "int". Тип "long" так само існує, але є 64-бітовим. Це необхідно пам'ятати, якщо Ви будете використовувати "long" в C #, так само як використовуєте у VB, то Ваші програми будуть вимагати більше пам'яті, ніж їм необхідно насправді. Не дивлячись на це VB тип "Byte", був просто перейменований в "byte" і так і залишився рівним одному байту.

В C # існують ще беззнакові типи даних "ushort", "uint", "ulong" і знаковий "sbyte". Іноді ці типи приносять відчутну користь, але підтримуються тільки частиною Зиков. NET і через це використовуються рідко.

Речові типи "Single" і "Double" просто перейменовані в "float" і "Double" відповідно, а логічний тип "Boolean" в "bool".

Багато хто з вбудованих в Visual Basic стічних функцій не підтримуються в строковому типі C #. Є функція для пошуку рядків, вилучення підрядків і виконання інших операцій. Дивіться документацію по типу "System.String".

В C #, також як і в VB, першому елементу масиву присвоюється індекс 0. Через відсутність команди "ReDim", для зміни верхньої і нижньої межі масиву, Вам доведеться використовувати тип "ArrayList", з простору імен "System.Collection", поряд з іншими класами-колекціями допускають зміни розміру.

Оператори

Оператори в C #, дещо відрізняються від звичних VB, виходячи з цього деякі висловлювання можуть здатися Вам незнайомими, дивіться таблицю 1:

Оператор VB Аналог в C #
^ Немає дивіться в хелпе Math.Pow ()
Mod %
& +
= ==
<> !=
Like Ні, але він частково відтворюється в класі System.Text.RegularExpressions.Regex
Is Ні, оператор is в C # має інше призначення
And &&
Or ||
Xor ^
Eqv Ні, вираз A Eqv B аналогічно! (A ^ B)
Imp Немає

Таблиця 1

Класи, типи, функції, інтерфейси

Оскільки C # відноситься до об'єктно-орієнтованим мовам, основною структурною одиницею є клас. Програмний код та змінні не можуть перебувати в глобальної області, так як вони завжди повинні відноситься до конкретного класу. В результаті цього код програми повинен стати більш читабельним і відмінним, по своїй організації, від VB. Хоча деяку схожість між ними безумовно буде.

Властивості підтримуються і в C #, але мають дещо інший синтаксис, і ще в C # не існує властивостей за замовчуванням.

Послідовність виконання

В C # і VB використовується схожі керуючі структури, але синтаксис трохи відрізняється. Не існує команди "Then", після умови відразу слід блок виконуваних команд, а потім необов'язкова команда "else".

Давайте розглянемо фрагмент коду на VB:

If a < 10 then
    b = 1
Else
    b = 0
End If

А тепер те ж саме, але в C #

If (a < 10)
    B = 1;
Else {
    B = 0;
}

Зауважте в C #, не існує VB команди "Else If", за місце неї застосовуйте блок операторів "switch / case / default", наприклад наступний код на VB:

If a = 1 Then
    b = 1
Else If a = 2 Then
    b = 2
Else
    b = 0
End If

Повністю еквівалентний в C #:

switch (a) {
    case 1:
        b = 1;
    case 2:
        b = 2;
    default:
        b = 0;
}

Цикли "for" мають дещо інший, принцип залишився той же, якщо не звертати уваги на те, що операція виконується в кінці, повинна бути вказана явно. Зараз розглянемо приклад циклу "For / Next" в VB:

For a = 1 To 10 'Що то робимо
Next a

В C # цей код буде виглядати так:

For (int a = 0; a <10; a + +) {
    / / Що то робимо
} 

Висновок

При написанні цієї статті, я не ставив собі мети створити короткий посібник по переходу з Visual Basic на C #. Мною переслідувалася лише одна мета - дати Вам інформацію для роздумів. Хоча до виходу релейза Visual Studio.NET ще багато часу, варто вже зараз почати визначитися з вибором.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*