Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
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í.
discount 30 + hiring

Visual Basic vs. C # - Rozdiely a prechod medzi nimi

Čas od času sa na fóre objaví dotaz na tému C# (číta sa sie Sarp) × Visual Basic (skrátene VB), ich rozdiely, prednosti a podobne. Pretože poznám oba jazyky, pokúsim sa vám vysvetliť rozdiely medzi nimi a následný prechod medzi nimi.

Visual Basic .NET vs C# .NET

Histórie

Najprv je potrebné sa pozrieť do histórie oboch jazykov. Visual Basic je tu s nami od roku 1991. V roku 2002 však prišla zmena, Microsoft Visual Basic .NET (.NET, čítame dotNET) teraz beží pod .net, rovnako ako zbrusu nový jazyk C #. Starý Visual Basic však nebol totožný s dnešným a preto množstvu vývojárov prechod na dnešné Visual Basic trval dlho a občas sa vykľuje jedinec, čo neprešiel dodnes.

Oproti Visual Basicu .NET C# raketovo vyrástol a VB.NET prekonal skoro vo všetkom. Dnes niektorí začínajúci vývojári o Visual Basicu nemajú ani tucha alebo za Visual Basic považujú stále ten starý.

Čo možno v týchto jazykoch programovať? Snáď úplne všetko. Klasické desktopové aplikácie, ako konzolové tak okenné a to hneď pomocou dvoch frameworkov (Windows Forms a Windows Presentation Foundation), serverové aplikácie (ASP.NET), moderné Windows Store aplikácie, mobilné Windows Phone a malé robotika (.NET micro Framework).

Syntaxe

Zdrojový kód je v C# značne kratšie, namiesto End If je v C# proste len zložená zátvorka}. Každý príkaz končí; čim je ľahké vopchať viac príkazov na riadok. Vo Visual Basicu ale u koncových značiek vždy viete čo tu končí, riadky sa zakončujú Enterom a ak chcete viac príkazov na jeden riadok, tak príkazy môžete oddeliť dvojbodkou:. Vo Visual Basicu sa ku všetkému možnému používajú kľúčové slová. Rozdiel je napríklad v dedičnosti a implementáciu rozhrania. Vo Visual Basicu bude kód nasledujúce:

Class MojeTrida
    Inherits MojeDruhaTrida
    Implements MojeRozhrani
End Class

VC # tento kód bude značne kratšia, ale ak nedodržujte konvencie (rozhranie začína veľkým i) neviete čo dedí a čo implementujete, či dokonca môžete implementovať 2 rozhrania a to je ešte len guláš.

class MojeTrida : MojeDruhaTrida, MojeRozhrani {

}

Knižnica Microsoft.Visu­alBasic

Vo Visual Basicu je vo východiskovom stave importovaná referencie na knižnicu Microsoft.Visu­alBasic. Vďaka tejto knižnici môžete používať niektoré funkcie, ktoré v C# v predvolenom stave jednoducho nie sú. Dobrým príkladom je opak k MessageBox.Show (), pre získavanie hodnoty od užívateľa môžete použiť funkciu InputBox, ktorá zobrazí dialógové okno s textovým poľom, čiže máte ušetrené celkom dosť práce.

InputBox vo Visual Basicu

Táto knižnica má funkciu Beep (), môžete používateľa bombardovať pípaním. Alebo jednoducho cinkať pri udalosti, ktorá bežne necinká.

Tento výukový obsah pomáhajú rozvíjať nasledujúce firmy, ktoré možno hľadajú práve teba!

Knižnica obsahuje odbor názvu My v ktorom sú niektoré funkcie implementované jednoduchšie, napr. Odosielanie a sťahovanie súborov na / z internetu je vďaka My.Computer.Network veľmi jednoduché.

Pre C# isty mám dobrú správu, ak po tejto knižnici túžite tak si ju môžete pridať do referencií a budete mať tieto funkcie aj v C #.

Rozdiely v syntaxi

Aj napriek tomu, že sú tieto jazyky takmer totožné, nájdu sa rozdiely, ktoré sú v jednom z jazykov tak nejako nevyriešené.

Dosť zásadný rozdiel je aj v zápise cykle For, zatiaľ čo Visual Basic ho má veľmi jednoduchý, u C# si s tým môžete viac vyhrať. V skutočnosti je však možné v oboch jazykoch docieliť viacmenej rovnakého efektu.

Vo Visual Basicu k tomu dôjdeme jednoducho, určíme premennú, povieme kde začať a kde skončiť a tým to pre nás hasne.

For i = 0 To 4

UC # to je mierne zložitejšie, okrem toho že tu premennú musíme sami aj deklarovať, musíme určiť podmienku a potom aj zabezpečiť samotnú inkrementácia.

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

Čo keď ale budeme chcieť vo Visual Basicu skákať nie o 1 ale napríklad o tri alebo dokonca o zápornej počty? Aj Visual Basic s týmto počíta, do definície pridáme kľúčové slovo Step s hodnotou čo sa má k tomu zakaždým pripočítať.

For i = 0 To -10 Step -2

Visual Basic má kľúčové slovo Handles, ktoré sa píše na koniec definície metódy, umožňuje odchytiť nejakej udalosti (oddeľujú sa čiarkou), aj bez nutnosti zbytočne zdĺhavého AddHandler. C# pre toto nemá žiadnu alternatívu. Na nasledujúcej ukážke je vidieť použitie kľúčového slova Handles a metódy fukce UploadFile, ktorá sídli v knižnici 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 vie znova alokovať pole pomocou kľúčového slova riedime, ak pole potrebujete vytvoriť znovu (napr. Ste zistili že ho potrebujte väčší - dosť častý jav) tak použijete práve tento príkaz. C# pre neho ale nemá žiadnu alternatívu.

Visual Basic má operátor ^, ktorý slúži na umocňovanie premenných na ntou.

Dim c As Integer = 3 ^ 2

Výsledkom uloženým vc bude 3 na 2 (čiže 9).

C# má operátormi pre inkrementácia a dekrementace, týchto operátorov vo VB.NET nenájdete.

C# má oproti Visual Basicu viacriadkové komentáre.

Toto boli príklady rozdielov, kde riešenie nie je až zas tak jednoznačné a ľahké. Všetky možno nejako obísť. Pri výbere jazyka by toto nemalo hrať žiadnu úlohu.

Prechod medzi jazykmi

Prechod medzi jazykmi je veľmi jednoduchý, v zásade ide len o tom zvyknúť si na syntax a potom to ide samo. Rozdielov je tak málo, že je v bežnom použití ani nespoznáte.

Automatický prevod kódu robotom

Existuje jedna služba, ktorá umožňuje prevod zdrojového kódu práve medzi jazykmi C# a Visual Basic. Je na webe developerfussion úplne zadarmo. Nefunguje dokonale (niektoré perličky nezvládol previesť), ale pre väčšinu úloh je plne dostačujúca. Neodporúčam ju pre prevod celého projektu, ale napríklad keď chcete previesť ukážku zdrojového kódu, hodí sa skvele.

Ručný prevod kódu

Ručné prevod kódu je samozrejme možný, ale je dobré sa zamyslieť, či nie je zbytočný. Niekedy je lepšie kód dopísať v pre vás sekundárnom jazyku než sa zaoberať prevodom, čo je iba čas navyše.

Rada na záver

Pretože syntax Visual Basicu stavia na kľúčových slovách, nie je úplne na škodu s ním pri výučbe začať. Prechod na C #, po ktorom je oveľa väčší dopyt, je potom veľmi jednoduchý. Ak už viete C #, prechod na Visual Basic je zbytočný, kód vám príde zdĺhavý a navyše po Visual Basicu nie je až zas tak vysoký dopyt ako po C #. Ak už viete nejaký jazyk a nepotrpíte si na Basic like syntax, tak Visual Basic určite nevoľte. Ak sa rozhodujte pre C #, tak verte, že nemáte čo stratiť.


 

Všetky články v sekcii
Online kurzy programovania VB.NET - Najväčší {C_A} tutorial
Článok pre vás napísal Michal Žůrek - misaz
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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

 

 

Komentáre

Avatar
Michal Žůrek - misaz:15.1.2014 12:28

a zjišťoval jsi i proč nešel zkompilovat? Jistěže inkrementace se musí přepsat z

i++;

na

i += 1

Nepopisoval jsem rozdíly kdesi uvnitř kde se k tomu běžný vývojář stejně nedostane, ale popisoval jsem hlavně to co vidí - zdrojový kód.

 
Odpovedať
15.1.2014 12:28
Avatar
Luboš Běhounek Satik:15.1.2014 13:13

Já někde používal ten převod z C# na VB (nebo obráceně? už si nejsem jistý) pro několikasetřádkový kód a fungoval celkem dobře :)

Odpovedať
15.1.2014 13:13
https://www.facebook.com/peasantsandcastles/
Avatar
Jan Vargovský
Tvůrce
Avatar
Jan Vargovský:15.1.2014 16:45

Pak srovnávat jazyky jen z hlediska syntaxe mi přijde celkem k ničemu. To rovnou můžeš napsat článek Java x C# :)

Luboš Běhounek Satik Já dělal něco se složkama a měl jsem jen metodu, co vracela IEnumerable a nějak z toho vylezl paskvil, který vůbec nefungoval, protože to neznalo ani ty třídy k Directory, Path a nevím co ještě.

 
Odpovedať
15.1.2014 16:45
Avatar
Odpovedá na Jan Vargovský
Michael Olšavský:15.1.2014 18:24

To už je trochu divné. VB.NET má stejné knihovny a vestavěné třídy (.NET)

 
Odpovedať
15.1.2014 18:24
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá na Michael Olšavský
Jan Vargovský:15.1.2014 18:49

Divné to je, to máš pravdu :)

 
Odpovedať
15.1.2014 18:49
Tento výukový obsah pomáhajú rozvíjať nasledujúce firmy, ktoré možno hľadajú práve teba!
Avatar
Radim
Nevyplnené
Avatar
Radim:9.2.2014 12:58

Díky za skvělej článek, už spoustu let pracuju s VB.NET a mám v plánu přejít na C#, právě kvůli tomu že s ním pracuje mnohem víc lidí a je více používán na scriptování(U­nity3D,UDK..at­d).

 
Odpovedať
9.2.2014 12:58
Avatar
Petr Žákavec:24.9.2019 10:09

Rád bych se zeptal – Může být část projektu v C# a část v VB? Popřípadě za jakých předpokladů.

 
Odpovedať
24.9.2019 10:09
Avatar
Odpovedá na Petr Žákavec
Michal Štěpánek:24.9.2019 14:18

Nějak si nedokážu představit, jak by se to dalo technicky provést. Už na začátku projektu volíš konkrétní jazyk a nevím, jak bys pak chtěl do něj napasovat nějaký kód v druhém jazyce.

Editované 24.9.2019 14:19
Odpovedať
24.9.2019 14:18
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovedá na Michal Štěpánek
Petr Žákavec:24.9.2019 14:33

Proto jsem se ptal. Napadlo mě to, když jsem objevil:
https://marketplace.visualstudio.com/items?…

 
Odpovedať
24.9.2019 14:33
Avatar
hanpari
Tvůrce
Avatar
Odpovedá na Petr Žákavec
hanpari:24.9.2019 14:40

Jistě, může, v rámci jednoho solution můžeš kombinovat jazyky.

Tady je příklad toho, jak spolupracuje F# se C#

https://connelhooley.uk/…p-to-c-sharp

 
Odpovedať
24.9.2019 14:40
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!