Visual Basic .NET - co je nového

Někteří programátoři byli zdrceni tím, že Visual Basic je považován za objektově orientovaný programovací jazyk, například proto, že mu chybí konstruktory a dědičnost. Kód, napsaný ve VB6 nemůže přistupovat k některým vlastnostem Win32 a COM (například multithreading) a proto potřebujete jiné jazyky, jako například C nebo C++ pro zpracování nízkoúrovňových úloh.

Ok, je to pravda, ale to vše bude brzy historií, protože nová verze Visual Basicu - Visual Basic .NET je plně objektově orientovaná a má všechny možnosti, jako C++ (C#), o kterých jste snili. Neberte to tak, že jsou to pouze nějaká vylepšení do syntaxe jazyka: Microsoft kompletně předělal VB.NET se zaměřením na novou vývojovou platformu - .NET Framework.

.NET Framework
.Net Framework je nové vývojové prostředí pro Windows a Internetové aplikace a skládá se z Common Language Runtime (CLR) a z Base Class Library (BCL). Porozumět .NET platformě je velmi důležité, neboť je to struktura, na které je založen VB.NET. Microsoft připravil čtyři kompilery: C++, C#, VB.NET a JScript (http://msdn.microsoft.com/net). Teoreticky tedy můžete napsat Váš kód například v Notepadu a zkompilovat ho pomocí VBC.EXE (kompilátor pro VB.NET), ale Visual Studio.NET poskytuje sdílené grafické prostředí pro návrh, vývoj a ladění .NET komponentů.


V závislosti na tom, jaký jazyk je vybrán, strávili programátoři spoustu času řešením stále stejných problémů (například přístup k datům, I/O). Důvod, proč byla vytvořena BCL je poskytnout vývojářům rychle přístupné knihovny, řešící většinu programových problémů jako je interakce s operačním systémem , přístup k datům (ADO.NET) a uživatelské rozhraní (Windows Forms a WebForms). Například, takto zavoláte metodu Show() z třídy System.WinForms.MessageBox pro zobrazení zprávy ve VB.NET:

System.WinForms.MessageBox.Show("Hello VB.NET!")

Příkaz Visual Basicu MsgBox není ničím jiným než wrapperem pro  System.WinForms.MessageBox.Show().

Třída System.Console se stará o spravování I/O konzolových aplikací:

Dim str As String

'vstup
str = System.Console.ReadLine

'výstup
System.Console.WriteLine(str)

Toto je pouze pár příkladů pro demonstraci toho, že směska Win32/COM používaná dříve bude nahrazena knihovnou tříd společnou pro všechny .NET jazyky. BCL obsahuje stovky tříd v jednom objektovém modelu.

Všichni za jednoho, jeden za všechny
.NET jazyky jsou ekvivalentní, mají ty samé možnosti a mohou spolupracovat na binární úrovni. Všechny jazyky používají tu samou sadu typů, volání a zasílání parametrů: typ String existuje v C# zrovna tak jako ve VB.NET a oba jazyky jej ukládají v paměti stejným postupem. VB vývojáři mohou použít kódy napsané v C# (nebo C++ či JScriptu) a naopak. 

Tento jednoduchý interface:
public interface CSInterface
{
   void PrintLine(string message);
}

může být implementován VB třídou:
Public Class VBClass
   Implements CSInterface

   Sub PrintLine(ByVal message As String) Implements CSInterface.PrintLine
      System.Console.WriteLine(message)
   End Sub

   Sub OtherSub()
      ' kód
   End Sub

End Class

Třídy VB.NET mohou být přístupné jakémukoliv dalšímu jazyku a VB.NET kód může volat knihovny vytvořené v C# nebo JScriptu.

Výhodou je, že vývoj vícejazyčných aplikací je poměrně jednoduchý, protože všechny jazyky sdílí to samé výkonné prostředí, kterým je CLR. I další společnosti již ohlásili .NET jazyky, a nyní již existuje více než 20 jazyků, které nejsou vyvinuty Microsoftem, včetně jazyků Eiffel a Smarttalk.

Microsoft navrhl sérii specifikací, známou jako Common Language Specifications (CLS), která musí být při návrhu .NET překladače dodržena pro garanci ekvivalence. Tým pro vývoj VB.NET představil změny jak v syntaxi, tak v sémantice jazyka pro dodržení této specifikace. Například, .NET oznamuje všechny chyby - od matematických po chyby operačního systému - pomocí vyjímek, a CLS umožňuje všem .NET jazykům je spravovat. Příkaz Try ... Catch ... Finally nahrazuje předchozí On Error Goto. Zde je příklad:

'(Import System.IO)
Dim dout As Stream
Dim path As String = "C:\file.txt"

Try
   ' otevření souboru
   dout = File.OpenWrite(path)
Catch e As FileNotFoundException
   ' chyba, soubor neexistuje, vytvoříme nový soubor
   dout = File.Create(path)
Finally
   :
   ' zavření souboru
   dout.Close()
End Try

 Další

Autor: The Bozena