Die fünf wichtigsten Änderungen von VB 6 zu VB.NET

01

von 08

Die fünf wichtigsten Änderungen zwischen VB 6 und VB.NET

Die fünf wichtigsten Änderungen

Visual Basic 1.0 war während der gesamten Programmierung ein schweres Erdbeben. Vor VB1 mussten Sie C, C ++ oder eine andere schreckliche Entwicklungsumgebung verwenden, um Windows-Anwendungen zu erstellen. Programmierer verbrachten buchstäblich Wochen damit, Fenster auf Bildschirmen mit wählerischem, detailliertem und schwer zu debuggendem Code zu zeichnen. (Das Gleiche können Sie tun, indem Sie ein Formular in wenigen Sekunden aus der Symbolleiste ziehen.) VB1 war ein Hit, und unzählige Programmierer haben sofort damit begonnen.

Um die Magie zu verwirklichen, hat Microsoft einige wichtige Kompromisse bei der Architektur eingegangen. Insbesondere da VB1 die Formulare und Steuerelemente erstellt hat, haben sie dem Programmierer keinen Zugriff auf den Code gewährt, der dies getan hat. Sie haben entweder VB alles erstellen lassen oder Sie haben C ++ verwendet.

VB 2 bis 6 behielten dieselbe Architektur bei. Microsoft hat einige sehr clevere Updates vorgenommen, die Programmierern viel mehr Kontrolle gaben, aber letztendlich konnten Programmierer ihren Code immer noch nicht in den VB-Code integrieren. Es war eine Black Box - und auch nicht auf die gute OOP-Art. Eine andere Art, dies zu sagen, war, dass der Programmierer keinen Zugriff auf die internen VB- "Objekte" hatte, und eine andere Art zu sagen, dass VB6 immer noch nicht vollständig "objektorientiert" war.

instagram viewer

02

von 08

VB 6 - Hinter die Technologiekurve fallen

In der Zwischenzeit tauchten Java, Python und viele andere Programmiersprachen auf, die objektorientiert waren. Visual Basic wurde verpasst - große Zeit! Dies ist eine Situation, die Microsoft nicht toleriert... und sie beschlossen, das Problem ein für alle Mal zu lösen. Die Lösung ist .NET.

Aber um die Dinge zu tun, die .NET tun musste, entschied Microsoft, dass sie "die Kompatibilität brechen" mussten. Das heißt, Visual Basic-Programme waren (mit sehr geringfügigen Ausnahmen) von VB1 bis VB6 "aufwärtskompatibel". Ein Programm, das in dieser ersten Version von VB geschrieben wurde, wird weiterhin kompiliert und in der nächsten Version ausgeführt. Mit VB.NET stellte Microsoft jedoch fest, dass die Sprache nicht vollständig OOP-fähig und aufwärtskompatibel bleiben konnte.

Nachdem sie diese grundlegende Entscheidung getroffen hatten, öffneten sich die Schleusen nach zehn Jahren gesammelter "Wunschliste" -Änderungen und ALLE gingen in das neue VB.NET. Wie man in Großbritannien sagt: "Für einen Cent, für ein Pfund."

Hier ist ohne weitere Verzögerung meine ganz persönliche Liste der fünf wichtigsten Änderungen von VB6 zu VB.NET in umgekehrter Reihenfolge.

Wellllll... nur noch eine Verzögerung. Da wir von VB6 wechseln, wo ein Array als Dim myArray deklariert ist (5) hat 6 Elemente, Wir haben sechs von ihnen. Es passt nur ...

(Trommelwirbel bitte ...)

03

von 08

Auszeichnung (5) - C-ähnliche Syntaxänderungen

"Award (5)", unser 6. Platz Der Preis geht an die Wahl der C-Groupies: C-ähnliche Syntaxänderungen!

Jetzt können Sie a + = 1 anstelle von a = a + 1 codieren und DREI GANZE KEYSTROKES speichern!

Programmierer der Welt, freut euch! VB wurde auf das C-Niveau angehoben, und eine ganz neue Generation, die versucht, VB zu lernen, wird der Massenverwirrung, mit der Schüler von C ++ konfrontiert sind, ein wenig näher kommen.

Aber warte! Es gibt mehr!

VB.NET bietet jetzt eine "Kurzschlusslogik", die seit Jahren subtile Fehler in C ++ - Code einführt, um wertvolle Nanosekunden Prozessorzeit zu sparen. Die Kurzschlusslogik wertet bei Bedarf nur mehrere Bedingungen in einer logischen Anweisung aus. Beispielsweise:

Dim R As Boolean
R = Funktion1 () und Funktion2 ()

In VB6 werden beide Funktionen ausgewertet, ob sie benötigt werden oder nicht. Wenn bei VB.NET Function1 () false ist, wird Function2 () ignoriert, da "R" nicht True sein kann. Was aber, wenn eine globale Variable in Function2 () geändert wird - nur zufällig (C ++ - Programmierer würden sagen: "by schlechte Programmierung ".) Warum liefert mein Code manchmal die falsche Antwort, wenn er in übersetzt wird? VB.NET? Das könnte es sein!

Zum VersuchenVB.NET wird härter Fang ein bisschen Glück und Schließlich für "außergewöhnliche" Fehlerbehandlung anerkannt werden.

VB6 hatte das letzte Holdout GoTo: "On Error GoTo". Selbst ich muss zugeben, dass die strukturierte Ausnahmebehandlung im C ++ - Stil "Try-Catch-finally" eine enorme Verbesserung darstellt, nicht nur eine halbe Verbesserung.

Was, Sie sagen, "On Error GoTo" ist noch in VB.NET? Wellll... Wir versuchen nicht zu viel darüber zu reden.

04

von 08

5. Platz - Die verschiedenen Befehlsänderungen

5. Platz Auswahl ist eine Gruppenauszeichnung: Die verschiedenen Befehlsänderungen! Sie müssen diese Auszeichnung teilen und es gibt eine Unmenge von ihnen. Microsoft hat zehn Jahre lang gespart und sie haben sich wirklich gelöst.

VB.NET unterstützt keine VarPtr-, ObjPtr- und StrPtr-Funktionen mehr, mit denen die Speicheradresse von Variablen abgerufen wurde. Und es unterstützt kein VB6-LSet, mit dem ein benutzerdefinierter Typ in einen anderen konvertiert wurde. (Nicht zu verwechseln mit VB6 LSet, das etwas völlig anderes macht - siehe unten.)

Wir verabschieden uns auch von Let, Is Missing, DefBool, DefByte, DefLng, DefCur, DefSng, DefDbl, DefDec, DefDate, DefStr, DefObj, DefVar und (meinem persönlichen Favoriten!) GoSub.

Der Kreis hat sich in GDI + DrawEllipse verwandelt. Gleiches gilt für Line to DrawLine. In der Berechnung haben wir jetzt Atan anstelle von Atn, Sign geht für Sgn und Sqrt passt für das große Spiel anstelle von Sqr.

In der Zeichenfolgenverarbeitung, obwohl sie noch verfügbar sind, wenn Sie auf eine Microsoft-Kompatibilität verweisen Namespace, wir haben PadRight für das LSet von VB6 (wieder völlig anders als das LSet von VB6 natürlich) und PadLeft für RSet. (Da sind die drei Tastenanschläge, die wir mit "+ =" gespeichert haben!)

Und natürlich, da wir jetzt OOP sind, ärgern Sie sich nicht, wenn Property Set, Property Let und Property Get in VB.NET nicht erfüllt sind.

Zum Schluss Debuggen. Drucken wird entweder Debug. Schreiben oder Debuggen. WriteLine. Nur Nerds drucken sowieso alles.

Dies berührt nicht einmal alle NEUEN Befehle in VB.NET, aber wir müssen diesen Unsinn irgendwo stoppen.

05

von 08

4. Platz - Änderungen an Prozeduraufrufen

Im 4. Platz, wir haben Änderungen an Prozeduraufrufen!

Dies ist die Auszeichnung "Güte, Reinheit und gesunde Tugend" und steht für eine Menge harter Kampagnen der Fraktion "kein schlampiger Code mehr".

Wenn in VB6 eine Prozedurparametervariable ein intrinsischer Typ ist, ist sie ByRef, sofern Sie sie nicht codiert haben ByVal explizit, aber wenn es nicht ByRef oder ByVal codiert ist und es keine intrinsische Variable ist, dann ist es ByVal... Verstanden?

In VB.NET ist es ByVal, es sei denn, es ist ByRef codiert.

Die Standardeinstellung von ByVal VB.NET verhindert übrigens auch, dass Änderungen an Parametervariablen in Prozeduren unbeabsichtigt zurück in den aufrufenden Code übertragen werden - ein wesentlicher Bestandteil einer guten OOP-Programmierung.

Microsoft "überlastet" VB.NET auch mit einer Änderung der Anforderungen für Klammern in Prozeduraufrufen.

In VB6 sind Klammern um Argumente erforderlich, wenn Funktionsaufrufe ausgeführt werden, jedoch nicht, wenn eine Unterroutine aufgerufen wird, wenn die Call-Anweisung nicht verwendet wird, sondern wenn die Call-Anweisung verwendet wird.

In VB.NET sind Klammern um eine nicht leere Argumentliste immer erforderlich.

06

von 08

3. Platz - Arrays basieren auf 0 statt auf 1

Der Bronze Award - 3. Platz, geht zu Arrays basieren auf 0 statt auf 1!

Es ist nur eine Syntaxänderung, aber diese Änderung erhält den Status "Medaillenpodest", weil sie gewählt wird, "höchstwahrscheinlich Ihre Programmlogik vermasseln". Denken Sie daran, 3. Platz IS "Award (2)" in unserer Liste. Wenn Sie Zähler und Arrays in Ihrem VB6-Programm haben (und wie viele nicht), wird dieses Sie messen.

Seit zehn Jahren fragen die Leute: "Was hat Microsoft geraucht, als sie es so gemacht haben?" Und seit zehn Jahren haben Programmierer Die Tatsache, dass es ein myArray (0) -Element gab, das nur Platz beanspruchte und sich nicht daran gewöhnte, wurde allgemein ignoriert etwas... Abgesehen von den Programmierern, die es benutzt haben und deren Programme aussahen, meine ich, nur "komisch".

Für I = 1 bis 5
MyArray (I - 1) = Was auch immer
Nächster

Ich meine, JA WIRKLICH! ...

07

von 08

2. Platz - Der Variantendatentyp

Die Silbermedaille von 2. Platz geht zu Ehren eines alten Freundes, der mit dem Tod von VB6 in den Eimer der Programmierung gefallen ist! Ich spreche von niemand anderem als: Der Variantendatentyp.

Wahrscheinlich repräsentiert keine andere einzelne Funktion von Visual Basic "notNet" besser die Philosophie "schnell, billig und locker". Dieses Bild hat VB bis zur Einführung von VB.NET verfolgt. Ich bin alt genug, um mich an die Einführung von Visual Basic 3.0 durch Microsoft zu erinnern: "Oh Wow! Lookee hier! Mit dem neuen, verbesserten Variant-Datentyp müssen Sie keine Variablen deklarieren oder nichts. Sie können sie sich einfach ausdenken und codieren. "

Microsoft hat seine Einstellung ziemlich schnell geändert und empfohlen, Variablen mit a zu deklarieren Bestimmter Datentyp fast sofort, so dass sich viele von uns fragen: "Wenn Sie keine Varianten verwenden können, warum? habe sie?"

Aber während wir uns mit Datentypen befassen, sollte ich erwähnen, dass sich viele Datentypen geändert haben und Variant nicht nur in feuchten Zement fallen gelassen wurde. Es gibt einen neuen Char-Datentyp und einen Long-Datentyp mit 64 Bit. Dezimal ist ganz anders. Short und Integer sind nicht mehr gleich lang.

Und es gibt einen neuen "Objekt" -Datentyp, der sein kann etwas. Habe ich jemanden sagen hören: "Sohn der Variante"?

08

von 08

1. Platz - VB.NET ist endlich vollständig objektorientiert

Schließlich! Die Goldmedaille, Platz 1Die höchste Auszeichnung, die ich vergeben kann, geht an ...

TA DAH!

VB.NET ist endlich komplett objektorientiert!

Wenn Sie jetzt an den Strand gehen, treten die C ++ - Programmierer Ihnen keinen Sand ins Gesicht und stehlen Ihre (Freundin / Freund - wählen Sie eine aus). Und du kannst immer noch Codieren Sie eine vollständige Testbilanz für das Hauptbuch, während Sie versuchen, herauszufinden, welche Header-Dateien enthalten sein sollen.

Zum ersten Mal können Sie so nah am Chip codieren, wie Sie möchten, und auf alle Systeminternalen zugreifen, die Ihr Herz begehrt ohne auf diese fiesen Win32-API-Aufrufe zurückgreifen müssen. Sie haben Vererbung, Funktionsüberladung, asynchrones Multithreading, Speicherbereinigung und alles ist ein Objekt. Kann das Leben besser werden?

Habe ich jemanden sagen hören, dass C ++ mehrfach vererbt wird und .NET immer noch nicht?

Verbrenne den Ketzer!