C # і Visual Basic 6

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

Введення

значно відрізняються від один від одного. 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>

*

*