IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Visual Basic vs. C# - Rozdíly a přechod mezi nimi

Čas od času se na fóru objeví dotaz na téma C# (čte se sí šarp) × Visual Basic (zkráceně VB), jejich rozdíly, přednosti a podobně. Protože znám oba jazyky, pokusím se vám vysvětlit rozdíly mezi nimi a následný přechod mezi nimi.

Visual Basic .NET vs C# .NET - Online kurzy programování VB.NET - Největší český e-learning

Historie

Nejprve je potřeba se podívat do historie obou jazyků. Visual Basic je tu s námi od roku 1991. V roce 2002 však přišla změna, Microsoft Visual Basic .NET (.NET, čteme dotnet) nyní běží pod .NETem, stejně jako zbrusu nový jazyk C#. Starý Visual Basic však nebyl totožný s dnešním a proto spoustě vývojářů přechod na dnešní Visual Basic trval dlouho a občas se vyklube jedinec, co nepřešel dodnes.

Oproti Visual Basicu .NET C# raketově vyrostl a VB.NET překonal skoro ve všem. Dnes někteří začínající vývojáři o Visual Basicu nemají ani tuchy nebo za Visual Basic považují pořád ten starý.

Co lze v těchto jazycích programovat? Snad úplně všechno. Klasické desktopové aplikace, jak konzolové tak okenní a to hned pomocí dvou frameworků (Windows Forms a Windows Presentation Foundation), serverové aplikace (ASP.NET), moderní Windows Store aplikace, mobilní Windows Phone a malé robůtky (.NET micro Framework).

Syntaxe

Zdrojový kód je v C# značně kratší, namísto End If je v C# prostě jen složená závorka }. Každý příkaz končí ; čim je snadné vecpat více příkazů na řádek. Ve Visual Basicu ale u koncových značek vždy víte co zde končí, řádky se zakončují enterem a pokud chcete více příkazů na jeden řádek, tak příkazy můžete oddělit dvojtečkou :. Ve Visual Basicu se ke všemu možnému používají klíčová slova. Rozdíl je třeba v dědičnosti a implementaci rozhraní. Ve Visual Basicu bude kód následující:

Class MojeTrida
    Inherits MojeDruhaTrida
    Implements MojeRozhrani
End Class

V C# tento kód bude značně kratší, ale pokud nedodržujte konvence (rozhraní začíná velkým i) nevíte co dědíte a co implementujete, či dokonce můžete implementovat 2 rozhraní a to je teprve guláš.

class MojeTrida : MojeDruhaTrida, MojeRozhrani {

}

Knihovna Microsoft.Visu­alBasic

Ve Visual Basicu je ve výchozím stavu importovaná reference na knihovnu Microsoft.Visu­alBasic. Díky této knihovně můžete používat některé funkce, které v C# ve výchozím stavu prostě nejsou. Dobrým příkladem je opak k MessageBox.Show(), pro získávání hodnoty od uživatele můžete použít funkci InputBox, která zobrazí dialogové okno s textovým polem, čili máte ušetřeno celkem dost práce.

InputBox ve Visual Basicu - Online kurzy programování VB.NET - Největší český e-learning

Tato knihovna má funkci Beep(), můžete uživatele bombardovat pípáním. Nebo prostě cinkat při události, která běžně necinká.

Knihovna obsahuje obor názvu My ve kterém jsou některé funkce implementovány jednodušeji, např. odesílání a stahování souborů na/z internetu je díky My.Computer.Network velmi jednoduché.

Pro C#isty mám dobrou zprávu, pokud po této knihovně toužíte tak si ji můžete přidat do referencí a budete mít tyto funkce i v C#.

Rozdíly v syntaxi

I přestože jsou tyto jazyky téměř totožné, najdou se rozdíly, které jsou v jednom z jazyků tak nějak nevyřešené.

Dost zásadní rozdíl je i v zápisu cyklu For, zatímco Visual Basic ho má velmi snadný, u C# si s tím můžete více vyhrát. Ve skutečnosti však lze v obou jazycích docílit víceméně stejného efektu.

Ve Visual Basicu k tomu dojdeme jednoduše, určíme proměnnou, řekneme kde začít a kde skončit a tím to pro nás hasne.

For i = 0 To 4

U C# to je mírně složitější, krom toho že tu proměnnou musíme sami i deklarovat, musíme určit podmínku a pak i zajistit samotnou inkrementaci.

for (int i = 0; i < 5; i++)

Co když ale budeme chtít ve Visual Basicu skákat ne o 1 ale třeba o tři nebo dokonce o záporné počty? I Visual Basic s tímto počítá, do definice přidáme klíčové slovo Step s hodnotou co se má k tomu pokaždé přičíst.

For i = 0 To -10 Step -2

Visual Basic má klíčové slovo Handles, které se píše na konec definice metody, umožňuje odchytit nějaké události (oddělují se čárkou), i bez nutnosti zbytečně zdlouhavého AddHandler. C# pro toto nemá žádnou alternativu. Na následující ukázce je vidět použití klíčového slova Handles a metody fukce UploadFile, která sídlí v knihovně MicrosoftVisu­alBasic.

Private WithEvents tmr As New Timer()

Private Sub SendData() Handles tmr.Tick, btnSend.Click
    My.Computer.Network.UploadFile("C:\data.txt", "ftp://mujserver.com/data.txt", "root", "*****")
End Sub

Visual Basic umí znovu alokovat pole pomocí klíčového slova ReDim, pokud pole potřebujete vytvořit znovu (např. jste zjistili že jej potřebujte větší – dost častý jev) tak použijete právě tento příkaz. C# pro něj ale nemá žádnou alternativu.

Visual Basic má operátor ^, který slouží k umocňování proměnných na ntou.

Dim c As Integer = 3 ^ 2

Výsledkem uloženým v c bude 3 na 2 (čili 9).

C# má operátory pro inkrementaci a dekrementaci, tyto operátory ve VB.NET nenajdete.

C# má oproti Visual Basicu víceřádkové komentáře.

Toto byly příklady rozdílů, kde řešení není až zas tak jednoznačné a snadné. Všechny lze nějak obejít. Při výběru jazyku by toto nemělo hrát žádnou roli.

Přechod mezi jazyky

Přechod mezi jazyky je velmi snadný, v zásadě jde pouze o tom zvyknout si na syntaxi a pak to jde samo. Rozdílů je tak málo, že je v běžném použití ani nepoznáte.

Automatický převod kódu robotem

Existuje jedna služba, která umožňuje převod zdrojového kódu právě mezi jazyky C# a Visual Basic. Je na webu developerfussion úplně zdarma . Nefunguje dokonale (některé perličky nezvládl převést), ale pro většinu úkolů je plně dostačující. Nedoporučuji ji pro převod celého projektu, ale třeba když chcete převést ukázku zdrojového kódu, hodí se skvěle.

Ruční převod kódu

Ruční převod kódu je samozřejmě možný, ale je dobré se zamyslet, jestli není zbytečný. Někdy je lepší kód dopsat v pro vás sekundárním jazyku než se zabývat převodem, což je pouze čas navíc.

Rada na závěr

Protože syntaxe Visual Basicu staví na klíčových slovech, není úplně na škodu s ním při výuce začít. Přechod na C#, po kterém je mnohem větší poptávka, je pak velmi snadný. Pokud již umíte C#, přechod na Visual Basic je zbytečný, kód vám přijde zdlouhavý a navíc po Visual Basicu není až zas tak vysoká poptávka jako po C#. Pokud již umíte nějaký jazyk a nepotrpíte si na Basic like syntaxi, tak Visual Basic určitě nevolte. Pokud se rozhodujte pro C#, tak věřte, že nemáte co ztratit.


 

Předchozí článek
Online test znalostí VB.NET
Všechny články v sekci
Online kurzy programování VB.NET - Největší {C_A} e-learning
Článek pro vás napsal Michal Žůrek - misaz
Avatar
Uživatelské hodnocení:
17 hlasů
Autor se věnuje tvorbě aplikací pro počítače, mobilní telefony, mikroprocesory a tvorbě webových stránek a webových aplikací. Nejraději programuje ve Visual Basicu a TypeScript. Ovládá HTML, CSS, JavaScript, TypeScript, C# a Visual Basic.
Aktivity