Porównanie Visual Basic i Visual Basic .NET
Visual Basic .NET został wydany przez firmę Microsoft w 2002 roku jako następca oryginalnego języka programowania komputerowego Visual Basic . Zostało zaimplementowane w .NET Framework 1.0 . Główną nową funkcją był zarządzany kod . Programiści zaznajomieni tylko z Visual Basic mieliby prawdopodobnie trudności w pracy z nową wersją lub dostosowywaniu do niej istniejących programów.
Oczywiste zasadnicze różnice
Nowa platforma niewiele przypominała swojego poprzednika. [ potrzebne źródło ] Podczas gdy programiści oczekiwali, że będą w stanie ponownie skompilować swoje źródła Visual Basic do docelowej platformy .NET, rzeczywistość była taka, że Visual Basic .NET był zupełnie innym paradygmatem. [ potrzebne źródło ]
Pomijając oczywiste różnice w składni, Visual Basic .NET zapewnia taką samą funkcjonalność jak C# (ponieważ oba kompilują się do MSIL , przy czym najbardziej oczywistą różnicą jest rozróżnianie wielkości liter w Visual Basic .NET, zachowując oryginalne rozróżnianie wielkości liter w Visual Basic) , co stanowi większy problem dla programistów C# próbujących współpracować z programistami Visual Basic .NET niż cokolwiek innego.
Podstawowa składnia pozostaje bardzo podobna: warunki, pętle, procedury, podprogramy są deklarowane i zapisywane w ten sam sposób (patrz Visual Basic). Mobilność z poprzednich iteracji Visual Basic do Visual Basic .NET jest tak naprawdę częścią istniejącego kodu: programiści z doświadczeniem w obu światach są zobowiązani do skutecznego ukierunkowania nowej platformy na starszą logikę. Deweloper Visual Basic .NET będzie musiał nauczyć się używania podstawowych typów .NET, a nie tego, do czego był przyzwyczajony w Visual Basic.
Programista, który pracował tylko z Visual Basic, może napotkać stromą krzywą uczenia się migracji do Visual Basic .NET. Programista znający inny język lub mający styczność ze środowiskiem wykonawczym .NET powinien sobie z tym poradzić. Lepiej byłoby myśleć o Visual Basic .NET jako o nowym języku inspirowanym klasycznym Visual Basic, a nie jako o kontynuacji Visual Basic 6.0, z dodatkową trudnością dla migrujących programistów, ponieważ VB.NET łączy się z .NET Framework, podczas gdy VB6 został oparty na Component Object Model (COM). [ potrzebne źródło ]
Bardziej szczegółowe porównanie
Istnieje kilka natychmiastowych zmian, na które programiści powinni zwrócić uwagę:
Bardziej składnia podobna do C
Visual Basic .NET obsługuje operatory złożone +=
, -=
, *=
, /=
, \=
, ^=
i &=
, dzięki czemu dłuższe linie, takie jak:
zmienna = zmienna + 1
można teraz zapisać jako:
zmienna += 1
Jednak operatory inkrementacji i dekrementacji nie są obsługiwane.
Zwarta logika
We wcześniejszych iteracjach języka Visual Basic wszystkie instrukcje w warunku byłyby oceniane, nawet jeśli wynik warunku można było określić przed obliczeniem warunku. Na przykład:
If foo () And bar () Wtedy kod ' jest wykonywany, jeśli zarówno foo() jak i bar() zwracają True, jednak jeśli foo() zwraca False, bar() jest nadal oceniane End If
Było to nie tylko nieefektywne, ale mogło prowadzić do nieoczekiwanych rezultatów dla każdej osoby przyzwyczajonej do innego języka. W Visual Basic .NET dodano nowe operatory AndAlso i OrElse, aby zapewnić ocenę zwarcia, podobnie jak w wielu innych językach.
Jawne typy podobne do wskaźników już nie istnieją
Typy zmiennych Var* są przestarzałe w Visual Basic .NET. Wspólne środowisko wykonawcze decyduje, które typy są typami referencyjnymi, a które typami wartościowymi, więc nie jest to już domena programisty.
Właściwości: pozwól i ustaw
Właściwości klasy nie wymagają już instrukcji Let i Set
Drukowanie debugowania
Debug.Print jest zastępowany przez Debug.Write i Debug.WriteLine
Procedury
Wywołanie procedury musi zawierać nawiasy w języku Visual Basic .NET.
Visual Basic .NET wymaga specyfikacji ByVal lub ByRef dla parametrów. W Visual Basic specyfikację można było pominąć, co oznacza domyślnie ByRef. Większość środowisk programistycznych, takich jak Visual Studio .NET , automatycznie wstawi ByVal, więc w efekcie wartością domyślną jest ByVal, a nie ByRef. Istnieją narzędzia do konwersji kodu Visual Basic na VB.NET, takie jak Visual Basic Upgrade Wizard, który był zawarty w Visual Studio .NET 2002 i 2003. Narzędzia do konwersji automatycznie wstawiają ByRef, jeśli to konieczne, zachowując semantykę aplikacji Visual Basic.
Tablice od zera
Visual Basic 5.0 i 6.0 tradycyjnie wykorzystywały tablice od zera (domyślna dolna granica), chyba że zadeklarowano „Option Base 1”. Było to źródłem wielu błędów typu out-by-one w programach Visual Basic, zwłaszcza w przypadku interoperacyjności poza granicami bibliotek programów. Chociaż środowisko uruchomieniowe języka wspólnego platformy .NET może obsługiwać tablice z dowolną wartością podstawową, Visual Basic .NET i C# udostępniają tylko tablice i listy oparte na zerze, a specyfikacja języka wspólnego platformy .NET wymaga tablic opartych na zerze w celu zapewnienia współdziałania między językami platformy .NET.
Postrzępione tablice
Visual Basic .NET wprowadził koncepcję postrzępionej tablicy , w której wiersze mogą mieć nierówną długość, w przeciwieństwie do jednolitej długości tablic narzuconej programistom Visual Basic.
Typ danych Variant zniknął
W językach kompilowanych do platformy .NET typy są ścisłe. Podczas gdy środowisko wykonawcze pozwala na anonimowe obiekty, które nie mają predefiniowanego, nazwanego typu, typ zmiennej może nie zmieniać się w trakcie jej życia, stąd potrzeba usunięcia typu danych Variant. Jednak typ „Obiekt” ma w praktyce nieco podobne zachowanie.
Prawdziwe programowanie obiektowe
Visual Basic był językiem obiektowym . Obsługiwał klasy, ale nie inne koncepcje, które czyniłyby go językiem obiektowym. Visual Basic .NET to prawdziwie zorientowany obiektowo język z następującymi cechami:
- dziedzictwo
- przeciążenie funkcji
Chociaż platforma .NET nie jest ukierunkowana na język, umożliwia wielokrotne dziedziczenie klas — obsługiwane jest wielokrotne dziedziczenie interfejsów.
Zmień z COM na NET
Podczas gdy IDE rozsądnie ukrywa ten fakt, zależność od obiektów ActiveX jest odrzucana w Visual Basic .NET (chociaż istnieją mechanizmy łączenia z COM w .NET ) na rzecz komponentów .NET oferujących podobną funkcjonalność. Ta zmiana jest dobra dla programisty Visual Basic, ponieważ wiele problemów z wydajnością w Visual Basic powstało wokół kosztu interfejsu COM.
Podstawowe zarządzanie geometrią za pośrednictwem projektanta formularzy
Jedną z prawdziwych zmor w życiu programisty Visual Basic zawsze było pisanie kodu zmieniającego rozmiar. Podczas gdy paradygmat WinForms pozostawia wiele do życzenia w dziale zarządzania geometrią w obliczu zestawów narzędzi, takich jak Qt i GTK+ , przynajmniej programista może zakotwiczyć widżety na formularzach zamiast konieczności pisania ryz kodu w modułach obsługi OnResize.
Opcja jawna domyślnie
W Visual Basic .NET opcja Explicit jest domyślnie włączona.