visual basic net - jetzt lerne ich visual basic net pdf

Download Visual Basic NET - Jetzt lerne ich Visual Basic NET pdf

If you can't read please download the document

Upload: hadat

Post on 08-Dec-2016

282 views

Category:

Documents


28 download

TRANSCRIPT

(eBook) - Visual Basic - Jetzt lerne ich Visual Basic .NET/Jetzt Lerne Ich Visual Basic Net 1 (Kap 1 - 4).pdfVisual Basic .NET

Markt+Technik Verlag

Peter Monadjemi

Jetzt lerne ich

Visual Basic .NET

Die Deutsche Bibliothek - CIP-EinheitsaufnahmeEin Titeldatensatz fr diese Publikation ist bei Der Deutschen Bibliothek erhltlich.

Die Informationen in diesem Produkt werden ohne Rcksicht auf eineneventuellen Patentschutz verffentlicht.Warennamen werden ohne Gewhrleistung der freien Verwendbarkeit benutzt.Bei der Zusammenstellung von Texten und Abbildungen wurde mit grter Sorgfalt vorgegangen.Trotzdem knnen Fehler nicht vollstndig ausgeschlossen werden.Verlag, Herausgeber und Autoren knnen fr fehlerhafte Angabenund deren Folgen weder eine juristische Verantwortung nochirgendeine Haftung bernehmen.Fr Verbesserungsvorschlge und Hinweise auf Fehler sind Verlag undHerausgeber dankbar.

Alle Rechte vorbehalten, auch die der fotomechanischenWiedergabe und der Speicherung in elektronischen Medien. Die gewerbliche Nutzung der in diesem Produkt gezeigtenModelle und Arbeiten ist nicht zulssig.

Fast alle Hardware- und Software-Bezeichnungen, die in diesem Bucherwhnt werden, sind gleichzeitig auch eingetragene Warenzeichenoder sollten als solche betrachtet werden.

Umwelthinweis:Dieses Buch wurde auf chlorfrei gebleichtem Papier gedruckt.Die Einschrumpffolie - zum Schutz vor Verschmutzung - ist ausumweltvertrglichem und recyclingfhigem PE-Material.

10 9 8 7 6 5 4 3 2 1

05 04 03 02

ISBN 3-8272-6267-4

2002 by Markt+Technik Verlag,ein Imprint der Pearson Education Deutschland GmbH,Martin-Kollar-Strae 1012, D-81829 Mnchen/GermanyAlle Rechte vorbehaltenLektorat: Erik Franz, [email protected]: Petra Kienle, FrstenfeldbruckHerstellung: Claudia Burle, [email protected]: Gregor Kopietz, [email protected]: Nowak werbeagentur & medien, PfaffenhofenSatz: text&form GbR, FrstenfeldbruckDruck und Verarbeitung: Media Print, PaderbornPrinted in Germany

5

bersicht

Einleitung 171 Das erste Visual Basic .NET-Beispiel 312 Die .NET-Philosophie 473 Visual Basic .NET-Einmaleins 834 Kontrollstrukturen 1135 Funktionen und Prozeduren 1376 Klassen 1477 Zeichenketten (Strings) 1738 Arrays (Felder) 1979 Dateizugriffe und Ausnahmen 22710 Fortgeschrittenere Programmelemente in

Visual Basic .NET 25911 OOP fr (etwas) Fortgeschrittene 29712 XML, was sonst? 33513 Visual Basic .NET und das Internet 36714 Windows Forms, Controls und Visual Studio .NET 387Anhang A: .NET von A bis Z 413Anhang B: Visual Basic .NET-Referenz 417Anhang C: berblick ber das .NET-Framework-SDK 427Anhang D: Antworten 433Stichwortverzeichnis 473

7

Inhaltsverzeichnis

Einleitung 17

1 Das erste Visual Basic .NET-Beispiel 31

1.1 Auch .NET kann Hallo sagen 311.2 Der allgemeine Aufbau einer Konsolenanwendung 341.2.1 Der allgemeine Programmrahmen einer Konsolenanwendung 351.3 Ein paar Spezialitten in .NET 361.3.1 Dateizugriffe in Visual Basic .NET 361.3.2 XML-Dateien lesen und auswerten 371.3.3 Herunterladen einer HTML-Datei von einem Webserver 391.3.4 Zugriff auf die Metadaten eines Assembly 401.3.5 Aufruf einer Windows-API-Funktion 421.4 Die wichtigsten Compiler-Optionen 431.5 Zusammenfassung 451.6 F&A 46

2 Die .NET-Philosophie 47

2.1 Was ist .NET? 492.1.1 Die Rolle der Common Language Runtime (CLR) 502.1.2 IL als die neue Maschinensprache 522.2 .NET im Gesamtberblick 542.3 Die Datentypen des Common Type System (CTS) 562.4 Die .NET-Basisklassen 58

8

Inhaltsverzeichnis

2.4.1 Die Rolle der Namensrume 582.4.2 Die .NET-Basisklassen in der Praxis 602.5 Die Rolle der Assemblies 622.5.1 Starke Namen, schwache Namen 652.6 Vorteile fr Programmierer 692.6.1 Versionierung 702.6.2 Sicherheit 712.6.3 Vereinfachung durch Laufzeitdienste 722.6.4 Vereinheitlichung 722.6.5 Leistungsfhigere Programmiersprachen 722.6.6 Durch und durch objektorientiert 732.6.7 Zusammenarbeit zwischen Programmen 732.6.8 Realisierung verteilter Anwendungen 762.6.9 Mehr Spa 762.7 Weitere Bestandteile von .NET 772.7.1 C# und Visual Basic .NET 772.7.2 ASP .NET 782.7.3 Webdienste 782.7.4 ADO .NET 792.7.5 Windows Forms 792.8 Die Common Language Infrastructure (CLI) fr Linux & Co. 792.9 Zusammenfassung 802.10 F&A 81

3 Visual Basic .NET-Einmaleins 83

3.1 Kleine Merkzettel fr das Programm: die Variablen 843.1.1 Variablen mit einem Anfangswert belegen 843.1.2 Mehrere Variablen in einem Befehl deklarieren 843.1.3 Mehrere Variablen mit unterschiedlichen Datentypen in

einem Befehl deklarieren 843.1.4 Weitere Deklarationsbefehle 853.2 Die Merkmale einer Variablen 853.2.1 Formal und trotzdem unverzichtbar: der Datentyp 853.2.2 Typisch Basic der Datentyp ist freiwillig 883.2.3 Die Rolle des Gltigkeitsbereichs:

Wo werden Variablen in einem Programm deklariert? 893.2.4 Die Rolle der Lebensdauer einer Variablen 923.3 Charakterfest und bestndig: die Konstanten 933.3.1 Auch Zahlenwerte sind Konstanten 943.3.2 Zeichenkettenkonstanten 94

9

Inhaltsverzeichnis

3.4 Regeln fr Bezeichner 953.5 Spezialisten frs Rechnen: die Operatoren 953.5.1 Ein kleiner Ausflug in die Mathe-Klasse 963.5.2 Zuweisungen 973.5.3 Alles genau nach Vorschrift: die Operatorreihenfolge 983.5.4 Kombiausdrcke: Zuweisung und Operator in einem 983.6 Wahr oder falsch? die Welt der logischen Verknpfungen 993.6.1 Die Und-Verknpfung mit dem And-Operator 1003.6.2 Die Oder-Verknpfung mit dem Or-Operator 1013.6.3 Die Exklusiv-Oder-Verknpfung mit dem XOR-Operator 1013.6.4 Die Negation mit dem Not-Operator 1013.6.5 Die kombinierten logischen Operatoren AndAlso und OrAlso 1013.7 Eingaben von der Tastatur 1033.8 Ausgaben auf dem Bildschirm 1033.8.1 Formatierte Ausgaben 1043.8.2 Ausgaben ber die Msgbox-Funktion 1063.8.3 Die InputBox-Funktion zur Eingabe 1073.9 Der allgemeine Aufbau eines Visual Basic .NET-Programms 1073.9.1 Die Rolle der Visual Basic .NET-Module 1083.10 F&A 110

4 Kontrollstrukturen 113

4.1 Das Prinzip der Entscheidungen 1144.2 Wenn etwas so ist, dann tue das der If-Befehl 1154.2.1 Vergleichsoperatoren 1174.2.2 Bedingungen kombinieren 1174.3 Es gibt immer eine Alternative der Else-Befehl 1184.4 Der ElseIf-Befehl als Abkrzung 1194.5 Mehrfachentscheidungen mit dem Select Case-Befehl 1214.5.1 Einen Case-Zweig vorzeitig verlassen 1254.6 Wiederholungen mit System der For Next-Befehl 1254.6.1 Zhlschleifen mit For Next 1254.6.2 Wiederholungen mit Abbruchbedingung

der Do Loop-Befehl 1294.6.3 Eine Alternative, die eigentlich keine ist der While-Befehl 1304.7 Schleifen mit Notausgang der Exit-Befehl 1314.8 Wie schnell ist Visual Basic .NET? 1334.9 Zusammenfassung 1344.10 F&A 134

10

Inhaltsverzeichnis

5 Funktionen und Prozeduren 137

5.1 Die Definition von Funktionen und Prozeduren 1385.1.1 Der allgemeine Aufbau einer Funktion 1385.1.2 Der allgemeine Aufbau einer Prozedur 1395.1.3 Die Rolle des Rckgabewerts 1395.2 Parameterbergabe bei Funktionen 1395.2.1 Benennung von Funktionsparametern 1405.2.2 Parameterbergabe als Wert 1415.2.3 Optionale Parameter 1415.2.4 Funktionen mit einer variablen Anzahl an Parametern 1425.3 Die Rolle des Funktionsnamens als lokale Variable 1425.4 Rekursive Funktionen 1435.5 Prozedur mit Notausgang 1445.6 Zusammenfassung 1445.7 F&A 145

6 Klassen 147

6.1 Klassen definieren 1486.2 Klassen instanzieren 1496.2.1 Vermeiden Sie spte Bindung 1496.3 Felder, Eigenschaften und Methoden implementieren 1506.3.1 Felder implementieren 1506.3.2 Eigenschaften implementieren 1516.3.3 Methoden implementieren 1546.4 Objekte benutzen 1556.5 Die Bedeutung von Me 1566.6 Objekte zuweisen und vergleichen 1586.6.1 Objekte vergleichen 1596.6.2 Feststellen, ob eine Instanz von einer bestimmten Klasse

abstammt 1606.7 Gemeinsam oder Instanz? 1616.8 Objekt oder Klasse? 1636.9 Die Rolle des Konstruktors 1646.10 Eigenschaften und Methoden berladen 1656.11 Klassen und der allgemeine Programmaufbau 1666.12 Klassen und wozu sie gut sind 1676.13 Die .NET-Basisklassen 1686.13.1 Die Rolle des Imports-Befehl 1706.14 Zusammenfassung 1716.15 F&A 171

11

Inhaltsverzeichnis

7 Zeichenketten (Strings) 173

7.1 Die Definition einer String-Variablen 1747.2 berblick ber die String-Klasse 1757.3 String-Operationen in der Praxis 1777.3.1 Strings zusammenfgen 1777.3.2 Strings vergleichen 1777.3.3 Einen String in Elemente zerlegen 1797.3.4 Einen String durchsuchen 1807.3.5 Elemente in einem String austauschen 1807.3.6 Elemente zu einem String zusammenfgen 1817.3.7 Elemente aus einem String entfernen 1817.3.8 Elemente aus einem String zurckgegeben 1827.3.9 Feststellen, ob ein String mit einem bestimmten Teilstring

beginnt oder endet 1827.3.10 Strings mit Leerzeichen fllen 1827.3.11 Strings zurechtschneiden 1827.3.12 Die Lnge einer Zeichenkette feststellen 1837.3.13 Strings ohne Wert 1837.3.14 Ein Beispiel fr die wichtigsten String-Operationen 1847.4 Die StringBuilder-Klasse fr den effektiven Umgang

mit Strings 1897.5 Spezialitten beim Umgang mit der String-Klasse 1907.5.1 Strings anlegen einmal ganz anders 1917.5.2 Noch einmal Strings zusammensetzen 1927.5.3 Wie passt das alles zusammen? 1927.5.4 Weitere Fakten ber Strings bei .NET 1937.6 Zusammenfassung 1937.7 F&A 194

8 Arrays (Felder) 197

8.1 Einer fr viele Feldvariablen stellen sich vor 1988.1.1 Feldvariablen mit ihrer Deklaration initialisieren 1998.1.2 Wachsen oder Schrumpfen kein Problem

der ReDim-Befehl 2008.1.3 Bitte nichts anfassen das Schlsselwort Preserve 2008.1.4 Feststellen der Anzahl der Elemente 2018.1.5 Feststellen der Obergrenze eines Feldes 2028.2 Die nchste Dimension mehrdimensionale Felder 2028.3 Die Array-Klasse stellt sich vor 2128.3.1 Instanzenmethoden und Eigenschaften der Array-Klasse 215

12

Inhaltsverzeichnis

8.4 Spezialitten beim Umgang mit Arrays 2158.4.1 Die Suche in einem Array 2168.4.2 Arrays gegenseitig zuweisen 2178.4.3 Felder lschen 2188.4.4 Arrays nach anderen Kriterien sortieren 2188.4.5 Arrays als Rckgabewerte von Funktionen 2198.4.6 Arrays mit einer anderen Untergrenze als 0 2208.5 In den Tiefen der Basisklassen die ArrayList-Klasse

als Spezialist mit mehr Mglichkeiten 2218.6 F&A 224

9 Dateizugriffe und Ausnahmen 227

9.1 Ein erstes Beispiel fr einen Dateizugriff 2289.1.1 Das Prinzip der Arbeitsteilung 2309.2 Die Rolle der Streams 2329.2.1 Die IO.Stream-Klasse 2329.3 Textdateien schreiben und lesen 2339.3.1 Die FileStream-Klasse 2349.3.2 Die StreamReader-Klasse 2349.3.3 Die StreamWriter-Klasse 2349.4 Text oder binr wo liegt der Unterschied? 2359.5 berblick ber den System.IO-Namensraum 2379.6 Zugriffe auf das Dateisystem 2389.7 Arrays in einer Datei speichern und wieder auslesen 2409.7.1 Sind Sie noch bei mir? Kurze Pause zum Ausruhen und

Reflektieren 2419.8 Ausnahmen und wie sie abgefangen werden 2439.8.1 Ausnahmen abfangen 2459.8.2 Der Try Catch-Befehl 2479.8.3 Informationen ber eine Ausnahme erhalten 2479.8.4 Die Rolle der SystemException-Klasse 2509.8.5 Ein allgemeiner Rahmen fr eine Ausnahmebehandlung 2519.8.6 Erweiterung mit dem When-Schlsselwort 2529.8.7 Gemeinsamer Ausgang fr die Ausnahmebehandlung 2529.8.8 Ausnahmebehandlung bei verschachtelten Prozeduren 2539.8.9 Ausnahmen gezielt auslsen 2559.9 Zusammenfassung 2559.10 F&A 256

13

Inhaltsverzeichnis

10 Fortgeschrittenere Programmelemente in Visual Basic .NET 259

10.1 Klein und praktisch: der With-Befehl 26010.2 Der Gltigkeitsbereich von Variablen 26110.2.1 Variablen in einem Befehlsblock 26110.2.2 Variablen in einer Funktion (oder Prozedur) 26210.2.3 Variablen in einer Klasse privat, ffentlich oder was? 26210.2.4 Variablen in einem Assembly 26410.2.5 Nur fr Freunde die Deklaration mit Friends 26510.3 Typenkonvertierungen 26610.3.1 Option Strict On 26610.3.2 Die CType-Funktion 26710.3.3 Ein Wort zur Konvertierung von Datumsangaben 26810.3.4 Die vielen C-Funktionen 26810.3.5 Direkter Zugriff auf einen Typ die GetType-Methode 26910.4 Zufallszahlen 27010.5 Sprnge im Programm der GoTo-Befehl 27110.6 Sammeln fr einen guten Zweck die Collection-Klassen 27210.6.1 Die NameValueCollection-Klasse im Namensraum

System.Collections.Specialized 27410.6.2 Die HashTable-Klasse ein Klassiker im modernen Gewand 27610.6.3 Die CollectionBase-Klasse ohne Vererbung geht es nicht 27910.7 Spezialist fr Auflistungen die For Each-Schleife 28210.8 Zugriff auf die Kommandozeilenargumente 28410.8.1 Spezialitt der Konsolenanwendungen 28510.9 Die Environment-Klasse 28510.10 Systeminformationen abfragen 28610.10.1 Der Zugriff auf die Registry 28710.10.2 Der Aufruf von API-Funktionen 28810.11 Was sind eigentlich (noch einmal) Namensrume? 29010.11.1 Der Imports-Befehl 29110.11.2 Eigene Namensrume definieren 29310.12 F&A 295

11 OOP fr (etwas) Fortgeschrittene 297

11.1 Die Basisklasse als Vorbild: Vererbung 29811.1.1 Vererbung Schritt fr Schritt kennen lernen 29811.1.2 Noch einmal das Protected-Schlsselwort 30111.1.3 Mehrfache Verberbung kein Problem 30111.1.4 Die abgeleitete Klasse erweitern 302

14

Inhaltsverzeichnis

11.1.5 berschreiben von Mitgliedern 30311.1.6 Die Rolle von MyBase 30411.1.7 Der Konstruktor der Basisklasse 30511.1.8 Polymorphie (garantiert ungefhrlich) 30711.1.9 Grnde fr Vererbung 30911.2 Spezialitten beim Umgang mit Klassen 31011.2.1 Klassen vor Vererbung schtzen 31011.2.2 Schtzen von Mitgliedern 31011.2.3 Verdecken von Variablen mit Shadows 31111.2.4 Festlegen einer Standardeigenschaft 31211.3 Abstrakte Basisklassen 31311.3.1 Abstrakt oder virtuell? 31611.4 Vllig unspektakulr: Ereignisse und Delegates 31611.4.1 Ein Delegate stellt sich vor 31611.4.2 Der Delegate-Befehl 31711.4.3 Ein Delegate-Objekt deklarieren 31711.4.4 Und nun zu den Ereignissen 31911.4.5 Ein Ereignis ber ein Delegate-Objekt definieren 32011.4.6 Ein Ereignis definieren 32011.4.7 Ein Ereignis auslsen 32011.4.8 Eine Ereignisprozedur definieren 32111.4.9 Der AddHandler-Befehl 32211.4.10 Ein Wort zu MultiCast-Delegates 32211.5 Schnittstellen 32311.5.1 Schnittstellen definieren 32411.5.2 Schnittstellen in den .NET-Basisklassen 32711.5.3 Spezialitten beim Umgang mit Schnittstellen 32911.5.4 Mehrere Schnittstellen implementieren 32911.5.5 Feststellen, ob eine Klasse eine Schnittstelle untersttzt 33011.5.6 Die Vorteile von Schnittstellen 33011.6 Zusammenfassung 33111.7 F&A 332

12 XML, was sonst? 335

12.1 XML fr Dummies 33612.1.1 Wohl geformte XML-Dokumente 33912.2 Von Knoten und Kindern 34012.2.1 Die Rolle der Attribute 34212.2.2 XML-Dokumente sind in Wirklichkeit Bume 34312.2.3 Schemadateien geben XML-Dokumenten eine Struktur 345

15

Inhaltsverzeichnis

12.3 Beispiele mit XML 34712.3.1 Ein erstes Beispiel mit XML 34712.3.2 XML-Dateien lesen 34912.3.3 Der Zugriff auf Attribute 35012.3.4 Die XMLReader-Klasse 35112.3.5 Spezialitten mit XPath 35312.3.6 XML-Dateien schreiben 35512.3.7 Objekte speichern durch XML-Serialisierung 35812.4 Wann ist XML wichtig und wann nicht? 36112.5 Ein kurzer Ausblick auf die XML-Webservices 36212.6 Zusammenfassung 36412.7 F&A 364

13 Visual Basic .NET und das Internet 367

13.1 Internet fr Dummies 36813.1.1 Internet = Client + Server 37013.2 Netzwerkverbindungen ber Sockets 37213.3 Kurzer berblick ber den System.Net-Namensraum 37813.4 Der Download einer HTML-Datei 37913.5 Und nun alles mit XML 38113.6 Zusammenfassung 38413.7 F&A 384

14 Windows Forms, Controls und Visual Studio .NET 387

14.1 Windows Forms und Controls 38814.2 Visual Studio .NET stellt sich vor 39214.2.1 Die IDE im Schnelldurchgang 39314.2.2 Anlegen von Projekten 39914.2.3 Projekteigenschaften 40014.2.4 Bestandteile eines Projekts 40114.2.5 Dateierweiterungen 40214.2.6 Debug oder Release? 40214.3 Windows-Anwendungen 40314.3.1 Windows Forms und Controls im Programm ansprechen 40314.3.2 Der Zugriff auf einzelne Windows Forms und Controls 40514.3.3 Eine Windows-Anwendung Schritt fr Schritt 40614.3.4 Wenn Fehler auftreten die Aufgabenliste 40914.4 Zusammenfassung 40914.5 F&A 41014.6 Schlusswort und Ausblick 411

16

Inhaltsverzeichnis

A .NET von A bis Z 413

B Visual Basic .NET-Referenz 417

B.1 Visual Basic .NET-Befehle 417B.2 Visual Basic 6.0-Befehle, die nicht mehr untersttzt werden 420B.3 Visual Basic .NET-Schlsselwrter 421B.4 Visual Basic .NET-Operatoren 424B.5 Die Visual Basic .NET-Datentypen 425

C berblick ber das .NET-Framework-SDK 427

C.1 Allgemeines zum .NET-Framework-SDK 427C.2 Die Installation 429C.3 Die Laufzeitumgebung 430C.4 Ein Wort zum Editor 431

D Antworten 433

Stichwortverzeichnis 473

17

Einleitung

Der 13. Februar 2002 markiert fr Windows-Programmierer in der ganzenWelt ein wichtiges Datum. An diesem Tag wurde nach mehrjhriger Entwick-lungsarbeit unter dem Namen Visual Studio .NET die neueste Version desEntwicklungswerkzeugs Visual Studio offiziell ausgeliefert, zu dem auch derNachfolger von Visual Basic 6.0 gehrt. Der Namenszusatz .NET (ausgespro-chen wie dotnet) geschah nicht ohne Grund und ist keinesfalls lediglich eineweitere Variante der bekannten Spielchen, die Microsoft bei der Namensge-bung ihrer Produkte gerne treibt. .NET ist der Name einer komplett neuenEntwicklungsplattform, auf der knftig alle Programmierer ihre Programmeschreiben sollen. .NET bietet viele wichtige Neuerungen und konkrete Verbes-serungen fr praktisch alle Programmierer (die in Kapitel 2 hoffentlich leichtverstndlich zusammengefasst werden). .NET soll ein wichtiges Defizit der bis-herigen Programmierplattform COM beheben. Es soll sehr viel einfacher wer-den, Anwendungen fr das Internet zu programmieren. Insbesondere vonden Web Services verspricht sich Microsoft eine ganze Menge. Sie knntendie Grundbausteine eines Internets sein, bei dem Dienstleistungen jeglicherArt im Vordergrund stehen, die ber Web Services abgewickelt werden.Microsoft will fr diese nicht nur die erforderliche Infrastruktur zur Verfgungstellen, sondern auch an jeder Transaktion verdienen. Doch das Internet unddie Web Services sind nur ein Aspekt bei .NET. Auch wer mit Internetpro-grammierung nichts am Hut hat, wird durch .NET viele wichtige Verbesserun-gen erhalten. Da wre zum einen Visual Studio .NET, ein umfangreiches Ent-wicklungswerkzeug, das erstmalig alle Microsoft-Programmiersprachen untereinen Hut bringt und eine moderne, leistungsfhige und trotzdem komforta-bel zu bedienende Entwicklungsumgebung darstellt. Da wre zum andereneine allgemeine Laufzeitumgebung (die Common Language Runtime, kurz

18

Einleitung

CLR), die allen .NET-Programmiersprachen gleichermaen zur Verfgungsteht und die allen Programmiersprachen einen einheitlichen Satz an Daten-typen und viele leistungsfhige Features bietet. Der CLR ist es zu verdanken,dass Visual Basic .NET Vererbung, Multithreading und eine strukturierte Aus-nahmebehandlung enthlt. Merkmale, die in anderen Programmiersprachen,Java sei hier als prominentestes Beispiel genannt, schon lange selbstverstnd-lich waren. Mussten sich Visual-Basic-Programmierer vor Jahren noch be-sorgt fragen, ob Visual Basic das richtige Werkzeug sei und die Zukunft nichtetwa Java gehre, so gehrt dies nun der Vergangenheit an. Visual Basic hateinen gewaltigen Sprung nach vorne gemacht und ist Java nun mindestensebenbrtig, wenn nicht sogar ein wenig berlegen.

Der ganze Fortschritt fordert allerdings auch seinen Preis. Dass der Nachfol-ger von Visual Basic 6.0 nicht die Versionsnummer 7.0 trgt, wie es eigent-lich zu erwarten gewesen wre, hat einen einfachen Grund. Bei Visual Basic.NET handelt es sich um eine von Grund auf neu entwickelte Programmier-sprache, bei der Microsoft lediglich aus Kompatibilittsgrnden den Befehls-satz weitestgehend beibehalten hat und die vertrauten Funktionen und Kon-stanten ber eine Kompatibilittsklasse zur Verfgung stellt. Visual Basic.NET ist damit eher eine Version 1.0 als eine Version 7.0. Dass das Ergebnisnicht 100% kompatibel zum Vorgnger ist, ist bei diesem Hintergrund nichtverwunderlich. Dennoch knnen alle Visual-Basic-Programmierer mit demErgebnis mehr als zufrieden sein. Niemand wird gezwungen, seine Program-me umzustellen, denn Visual Basic 6.0 und Visual Basic .NET werden in denkommenden Jahren parallel existieren (wenngleich es fr Visual Basic 6.0 kei-ne Updates mehr geben wird). Die Zukunft gehrt .NET und das ist gut so,denn es ist eine moderne Programmierplattform, die fr knftige Aufgaben,ob sie etwas mit dem Internet zu tun haben oder nicht, bestens gerstet ist.

An wen richtet sich dieses Buch?

Visual Basic .NET ist sehr viel mehr als eine Weiterentwicklung, es ist einevollstndige Neuentwicklung, die eigentlich den Namen Visual Basic .NET1.0 tragen msste. Dieser Umstand hat auch fr dieses Buch eine wichtigeKonsequenz. Es geht nicht um eine Einfhrung in Visual Basic 7.0, sondernum eine Einfhrung in Visual Basic .NET 1.0. Dies ist weniger eine nettesprachliche Spielerei, sondern drckt einen fundamentalen Wandel in derWelt der Microsoft-Programmiersprachen aus. Im Vordergrund steht der auf.NET basierende Programmierstil, ohne dabei auf etwaige Kompatibilittsfra-gen Rcksicht zu nehmen. So lassen sich Laufzeitfehler (bei .NET heien sieoffiziell Ausnahmen) wie seit Visual Basic 1.0 prima ber den Befehl On Er-ror Goto abfangen, Zufallszahlen ber die Rnd-Funktion erzeugen und Datei-zugriffe ber die allen Basic-Programmierern vertrauten Befehle (die bei Visu-al Basic .NET aber Methoden der Kompatibilittsklasse sind) Open, Print,Input und Close erledigen. Dieser Kompatibilittsmodus spielt fr dieses

19

Einleitung

Buch aber keine Rolle. Sie lernen vielmehr die neue Programmiersprache Vi-sual Basic .NET kennen. Vorkenntnisse in Visual Basic sind daher nicht un-bedingt von Vorteil. Im Gegenteil, fr erfahrene Visual-Basic-Programmierergilt der (zugegeben etwas radikale) Ratschlag: Vergessen Sie alles, was Siebislang ber Visual Basic wussten. Dass heit nicht, dass bei Visual Basic.NET alles anders ist und elementare Programmierregeln auf den Kopf ge-stellt werden. Das ist mit Sicherheit nicht der Fall. Es bedeutet lediglich, dassbei .NET die Programmiersprache allenfalls sekundr ist, da das .NET-Frame-work im Vordergrund steht. Scheinbar vertraute Sprachelemente drfen nichtdarber hinwegtuschen, dass unter der Haube nach anderen Regeln gespieltwird. Um diese Regeln mglichst schnell zu erlernen, ist es ratsam, die ver-trauten Regeln (zumindestens vorbergehend) auszublenden.

Dieses Buch ist daher auch kein reines Programmieranfngerbuch. Auchwenn offiziell keine Vorkenntnisse vorausgesetzt werden (auch keine Kennt-nisse ber frhere Visual-Basic-Versionen), ist eine gewisse Vertrautheit beimUmgang mit einer Programmiersprache und mit dem Prinzip, nach dem ausdem Programmtext (Quelltext) eine ausfhrbare Programmdatei wird, mit Si-cherheit von Vorteil. Um es einmal etwas salopp zu formulieren, das Buchfngt nicht bei Adam und Eva an.

Was lesen Sie in diesem Buch?

In diesem Buch geht es um eine grundlegende und vor allem leicht verstnd-liche Einfhrung in Visual Basic .NET mit vielen kleinen Beispielen. Da VisualBasic .NET, anders als C, C++, Java und sicherlich auch C# (die neue Pro-grammiersprache von Microsoft, die unter der Federfhrung von Anders He-jlsberg, dem Vater der Programmiersprachen Turbo Pascal und Delphi ent-wickelt wurde) keine Programmiersprache ist, die im akademischen Bereichgelehrt wird, sondern praktisch ausschlielich praxisorientiert genutzt wird,beschrnkt sich das Buch nicht nur auf eine Aneinanderreihung der wichtigs-ten Befehle, es geht vor allem um das Zusammenspiel mit .NET.

1: Ein erstes Beispiel in .NET

Kapitel 1 verschafft allen Leserinnen und Lesern ein erstes Erfolgserlebnis. Sietippen das erste Visual Basic .NET-Programm ein, kompilieren es mit demKommandozeilencompiler und erleben hautnah, dass sich ein Hallo, Welt-Programm auch mit Visual Basic .NET programmieren lsst (im Unterschiedzu frheren Versionen besteht es aber ausschlielich aus Klassen und Objek-ten).

2: Die .NET-Philosophie

In Kapitel 2 wird .NET in aller Krze und mit leicht verstndlichen Wortenvorgestellt. Dieses ist keinesfalls ein lstiges Pflichtkapitel, sondern ein wich-

20

Einleitung

tiger Baustein fr das Erlernen von Visual Basic .NET. Auerdem werden hiereine Reihe von Begriffen erklrt, die Sie bestimmt schon fter gehrt haben.

3: Visual Basic .NET-Einmaleins

In Kapitel 3 geht es um alle die Kleinigkeiten, die es bei jeder Programmier-sprache gibt und die berall ein wenig anders gehandhabt werden. Dazu ge-hren Variablen, Deklarationen, Zuweisungen, Operatoren und der allgemei-ne Programmaufbau.

4: Kontrollstrukturen

Zu den Kontrollstrukturen, die in Kapitel 4 an der Reihe sind, gehren Ent-scheidungen und Schleifen. Hier hat es bei Visual Basic .NET im Vergleich zuseinen Vorgngern praktisch keine nderungen gegeben, so dass dieses Ka-pitel auch sehr berschaubar ist.

5: Funktionen und Prozeduren

Klassen sind die Grundbausteine eines Visual Basic .NET-Programms, Funk-tionen und Prozeduren wiederum die Grundbausteine einer Klasse. In Kapitel5 wird erklrt, wie eine Funktion definiert wird, wie Parameter bergebenwerden und der Datentyp festgelegt wird.

6: Klassen

Klassen sind bei Visual Basic .NET was? Richtig, die Grundbausteine. VisualBasic .NET ist (anders als die Vorgngerversionen) durch und durch objekto-rientiert. Jedes Programm besteht aus mindestens einer Klasse. In Kapitel 6geht es um den Umgang mit Klassen, das Hinzufgen von Feldern, Eigen-schaften und Methoden sowie einige Spezialitten. Das wichtige (und bei Vi-sual Basic .NET neue) Prinzip der Vererbung ist in Kapitel 11 an der Reihe.

7: Umgang mit Zeichenketten (Strings)

Zeichenketten spielen in praktisch jedem Programm eine Rolle. Bei .NETsind Strings nicht einfach nur ein Datentyp, sie basieren vielmehr auf einer ei-genen Klasse, die in Kapitel 7 vorgestellt wird. Whrend die Stringverarbei-tung bei frheren Visual-Basic-Versionen noch ber viele verschiedene Funk-tionen erledigt wurde, gibt es bei .NET dafr die Methoden der String-Klasse.

8: Arrays (Felder)

Kapitel 8 stellt mit Arrays einen sehr wichtigen Datentyp vor, ber den sichmehrere Werte unter einem Namen zusammenfassen lassen. Arrays basierenbei .NET auf der Array-Klasse, die eine Reihe von Methoden zur Verfgungstellt, mit denen sich Arrays bearbeiten lassen (dazu gehrt unter anderemeine Sortierfunktion).

21

Einleitung

9: Dateizugriffe und Ausnahmen

Daten, die ein Programm entgegennimmt, ansammelt und errechnet, sollenim Allgemeinen auch irgendwo dauerhaft gespeichert werden. In Kapitel 9wird gezeigt, wie sich mit Hilfe der .NET-Basisklassen Daten in Dateien spei-chern und wieder aus Dateien auslesen lassen.

10: Fortgeschrittene Programmiertechniken

In Kapitel 10 werden verschiedene Spezialthemen vorgestellt, die in den bis-herigen Kapiteln keinen Platz hatten, die aber zum Grundwissen eines VisualBasic .NET-Programmierers gehren.

11: OOP fr (etwas) Fortgeschrittene

In Kapitel 6 ging es um das ABC der objektorientierten Programmierung(OOP); in Kapitel 11 sind die etwas fortgeschritteneren Konzepte wie Verer-bung, das damit direkt verbundene berschreiben von Mitgliedern und derUmgang mit Schnittstellen an der Reihe.

12: XML, was sonst?

XML ist das neue Zauberwort der IT-Branche, das auch bei .NET eine zentra-le Rolle spielt (vor allem in Zusammenhang mit den Web Services, wo es dasallgemeine Datenformat darstellt, mit dem Daten zwischen einem Programmund einem Web Service ausgetauscht werden). Auch wenn es kein direktesGrundlagenthema ist, zeigt Kapitel 12, wie mit Hilfe der .NET-BasisklassenXML-Dateien gelesen und geschrieben werden.

13: Internetprogrammierung mit Visual Basic .NET

Die Internetprogrammierung war einer der Grnde, warum .NET entwickeltwurde. .NET soll die Entwicklung von Internetanwendungen deutlich verein-fachen. Mit Visual Studio .NET wird die Programmierung von Webanwendun-gen (zum Beispiel mit Visual Basic .NET) so einfach wie die Programmierungeiner Windows-Anwendung. In Kapitel 14 geht es allerdings in erster Linieum die Frage, wie sich mit Hilfe der .NET-Basisklassen Dateien aus dem In-ternet herunterladen und einfache Zugriffe ber das HTTP-Protokoll durch-fhren lassen.

14: Windows Forms, Controls und Visual Studio.NE

Im grande finale des Buchs geht es endlich um das, was bei frheren Visual-Basic-Einfhrungen ganz am Anfang stand: Steuerelemente und Formulare.In diesem Kapitel betritt auch das Entwicklungswerkzeug Visual Studio .NETdie Bhne, das mit C++, C#, J# (die Java-Variante von Microsoft) und VisualBasic .NET gleich vier Programmiersprachen zusammenfasst. Kapitel 14stellt den Umgang mit der IDE vor und geht auf die Programmierung vonWindows-Anwendungen ein.

22

Einleitung

A: .NET von A bis Z

Mit .NET werden eine Vielzahl neuer Begriffe und Abkrzungen eingefhrt,die in Anhang A zusammengefasst werden.

B: Visual Basic .NET-Referenz

Anhang B ist fr alle, die es gerne etwas systematischer lieben. Sie finden indiesem Anhang eine komplette Referenz aller Befehle, Schlsselwrter, Ope-ratoren und Datentypen. Auerdem werden jene Befehle vorgestellt, die esim Vergleich zu Visual Basic 6.0 nicht mehr gibt.

C: Das .NET Framework-SDK im berblick

Anhang C stellt das .NET Framework-SDK mit seinen verschiedenen Tools,der umfangreichen Dokumentation und den zahlreichen Beispielen vor, dassauch auf der Buch-CD enthalten ist.

D: Antworten

Hier finden Sie alle Antworten und Lsungen zu den bungen und Quizfra-gen am Ende jedes Kapitels.

E: Der Inhalt der Buch-CD

Anhang E listet den Anhang der Buch-CD auf.

Fr alte Bekannte

Erfahrene Visual-Basic-Programmierer werden sich beim Kennenlernen vonVisual Basic .NET aufgrund der vielen Neuerungen und einigen gendertenSpielregeln so manches Mal fragen Was um aller Welt hat sich Microsoftwohl dabei gedacht?. Leserinnen und Leser, die bereits das Buch Jetzt lerneich Visual Basic 6.0 kennen, werden sich unter Umstnden eine hnlicheFrage stellen. Was hat sich der Autor dabei gedacht, wo sind die Fenster ge-blieben, wo die Leichtigkeit und der Spa beim Programmieren? Alle dieseDinge gibt es natrlich (oder gerade) unter .NET, allerdings stehen sie nichtmehr so stark im Mittelpunkt wie noch bei Visual Basic 6.0. In diesem Buchsteht der neue klassische Weg im Vordergrund. Sie lernen die Programmier-sprache Visual Basic .NET kennen und nicht das Entwicklungswerkzeug Visu-al Studio .NET. Alle neuen Befehle und Funktionen werden in kleine Konso-lenanwendungen eingebaut und nicht in eine typische Windows-Anwendungmit Fenster, Steuerelementen und Mens. Dieser Ansatz wurde gewhlt, weiles sehr wichtig ist, die Sprache Visual Basic .NET losgelst vom Rest zu se-hen. Dann stellt sich nmlich heraus, dass Visual Basic .NET lediglich eine rei-ne Programmiersprache ist, die vollkommen gleichberechtigt mit den brigen.NET-Programmiersprachen (vor allem C#) existiert. Visual Basic .NET redu-ziert sich dadurch auf einen Satz von Befehlen, Datentypen und Operatoren.

23

Einleitung

Der ganze Rest wird von .NET zur Verfgung gestellt. Allerdings, und auchdas muss bei der Einfhrung bercksichtigt werden, war Microsoft bei VisualBasic .NET besonders in der Pflicht, eine mglichst kompatible Umgebungzur Verfgung zu stellen. Aus diesem Grund enthlt Visual Basic .NET einigeberflssige Elemente, die es in anderen Programmiersprachen nicht gibt.Beispiele sind der allen Visual-Basic-Programmierern bestens bekannte Be-fehl On Error Goto oder der Befehl Module, mit dem Standardmodule defi-niert werden. Diese Befehle sind deswegen berflssig, weil sie auch mit denneuen Befehlen oder den Mglichkeiten der .NET-Basisklassen implementiertwerden knnen. Gestandene Visual-Basic-Programmierer knnen (und sol-len) diese Befehle weiterhin verwenden. Wer mit Visual Basic .NET erst in dieProgrammierung einsteigt, sollte sich mit diesen Kompatibilittsbrckennicht mehr als unbedingt ntig belasten, da sie ein wenig den Blick auf .NETund seine wirklich vielseitigen Mglichkeiten verstellen knnen. Aus diesemGrund wird in diesem Buch die neue Schule vorgestellt.

Wie einfach ist einfach?

Die Bcher der Serie Jetzt lerne ich haben den Anspruch, die Themen, umdie es geht, von Anfang zu erklren, so dass man sie, ohne ber spezielle Vor-kenntnisse verfgen zu mssen, nachvollziehen kann. Das gilt natrlich auchfr das vorliegende Buch. Im Vergleich zu seinem Vorgnger Jetzt lerne ichVisual Basic 6.0 ist es aber nicht mehr ganz so einfach. Wie ist das zu ver-stehen? Hier eine Analogie: Stellen Sie sich einen Hochsprungwettbewerbvor, bei dem es tolle Preise zu gewinnen gibt. Jeder mchte natrlich dabeisein. Und jeder schafft es auch relativ problemlos, denn die Latte hngt beietwa 1,10 Meter (selbst ein relativ ungebter Mensch sollte damit keine Pro-bleme haben). Alle sind zufrieden (bis auf diejenigen, die sich unterfordert fh-len und der Meinung sind, das sei unter ihrem Niveau sie programmieren inC++, verzhlen sich mit den geschweiften Klammern und Semikolons undsthnen jeden Tag ber die Brde ihrer Ttigkeit). Nun betritt .NET die Bh-ne. Es gibt einen neuen Wettbewerb mit noch tolleren Preisen. Wieder wollenalle mitmachen. Doch dieses Mal hat der Veranstalter die Latte um 40 cm h-her gehngt. Die Folge: Was einst so leicht aussah, hat es nun in sich. Vielenehmen lssig Anlauf und stellen erstaunt (und nicht gerade erfreut) fest, dassdie Latte erstaunlich hoch hngt. Doch es gibt wie immer eine gute Nachricht.Wer ein wenig trainiert, sich ber Technik (die war beim 1,10-m-Sprung nochnicht notwendig) Gedanken macht, die Sache optimistisch betrachtet undcool bleibt, schafft auch die neue Hhe. Es winkt das schne Gefhl, es ge-schafft zu haben, die Aussicht auf tolle Preise, mehr Selbstvertrauen und mehrFitness, die sich auch auf andere Bereiche auswirkt.

Was hat diese kleine Analogie mit Visual Basic .NET zu tun? Im Vergleich zumVorgnger hat Microsoft die Latte fr den Einstieg deutlich hher angesetzt.Zwar ist es im Prinzip genauso simpel wie frher, ein kleines Hallo, Welt-

24

Einleitung

Programm umzusetzen, doch sobald es um mehr geht (etwa um Dateizugriffe,den Umgang mit Datenstrukturen und Systemfunktionen oder auch die Aus-lieferung des Programms), wird es deutlich anspruchsvoller und es werdenKenntnisse vorausgesetzt, die man sich nicht unbedingt an einem Wochen-ende aneignen kann1. Es ist wichtig, den feinen Unterschied zu verstehen. Vi-sual Basic .NET ist nicht schwerer zu lernen als seine Vorgnger, es setzt nuretwas mehr Engagement und die Fhigkeit, in verschiedene Richtungen zudenken, voraus. Vor allem muss man bereit sein, sich mit dem groen Bild,konkret dem .NET-Framework, zu beschftigen (mehr dazu in Kapitel 2). BeiVisual Basic 6.0 war es nicht notwendig, ber DLLs, API-Funktionen und daszwar allgegenwrtige, durch die Visual-Basic-Umgebung aber gut versteckteComponent Object Model (COM) Bescheid zu wissen. Man konnte jahrelangwunderbar programmieren und die tollsten Programme schreiben (sofernman bestimmte Bereiche, wie das Programmieren mit Komponenten, aus-klammerte). Bei Visual Basic .NET ist es praktisch unmglich, das .NET-Framework lnger als ber die ersten kleinen Beispiele hinaus zu ignorieren,da es mit der Programmiersprache untrennbar verbunden ist (auch wenn sichMicrosoft, wie bereits erwhnt, Mhe gegeben hat, ein paar Dinge vor denProgrammierern zu verstecken). Was sollen Sie daraus lernen? Denken Sienoch einmal an die kleine Analogie mit dem Hochsprungwettbewerb. Um ihnzu gewinnen, waren ein wenig Training, etwas mehr Disziplin und vor allemgrere Entschlossenheit erforderlich. Diese drei Dinge bentigen Sie auch,um die Herausforderung Visual Basic .NET zu meistern. Am Ende winkt alsHauptpreis, dass Sie von sich sagen knnen, mit Visual Basic .NET eine dermodernsten Programmiersprachen zu beherrschen und mit .NET eine derleistungsfhigsten und umfangreichsten Systemplattformen zu kennen, die inden nchsten Jahren in der Softwareindustrie weltweit eine herausragendeRolle spielen wird. Dieses Buch soll Ihnen dabei behilflich sein.

Die Buch-CD

Neben allen Beispielen, die in diesem Buch vorgestellt werden, enthlt dieBuch-CD auch das (kostenlos erhltliche) .NET Framework-SDK, die Voraus-setzung, um unter .NET programmieren zu knnen. Da es auch die Spra-chencompiler enthlt (unter anderem jenen fr Visual Basic .NET), ist es alles,was Sie am Anfang bentigen, um mit der .NET-Programmierung starten zuknnen. Auerdem enthlt das Buch einen kleinen, praktischen Editor, dereine angenehme Alternative zu Notepad darstellt. Es handelt sich um dasOpen-Source-Tool Sharp Develop, das Sie im gleichnamigen Unterverzeich-nis finden.

1. Hchstens an einem langen Wochenende.

25

Einleitung

Die Beispielprogramme auf der Buch-CD

Alle greren Beispiele in diesem Buch finden Sie selbstverstndlich auch aufder Buch-CD (und parallel auf der Homepage zu diesem Buch). Das Verzeich-nis heit Quellen, aufzufinden im Ordner Buchdaten. Damit Sie die Beispieleeinfacher finden, ist im Buch zu jedem Beispiel, das auf der Buch-CD zu fin-den ist, der Dateiname angegeben. Der Hinweis vbnet0401.vb bedeutet,dass Sie das Listing zu diesem Beispiel in der Datei vbnet0401.vb finden. AlleBeispiele wurden von mir mehrfach geprft. Sollte sich wider Erwarten einListing nach dem Abtippen nicht kompilieren lassen oder sollte Ihnen etwasmerkwrdig vorkommen, orientieren Sie sich bitte an den Listings auf derBuch-CD im Verzeichnis Quellen. Aktuelle Versionen dieser Beispiele (undvieles mehr) finden Sie im Internet unter www.nanobooks.net.

Und noch einen kleinen Service enthlt die Buch-CD. Im Verzeichnis\Quellen\SampleSummary finden Sie das Visual Basic .NET-Projekt Sample-Summary, das eine HTML-bersicht aller in einem ausgewhlten Verzeichnisenthaltenen VB-Dateien anfertigt (die Exe-Datei finden Sie im Unterverzeich-nis \bin).

Danksagungen

Bedanken mchte ich mich bei meinem Lektor Erik Franz fr die wirklich an-genehme Zusammenarbeit und bei Martin Szugat, der das Manuskript nocheinmal kritisch gelesen hat und dabei die eine oder andere Unebenheit imOberflchendesign aufsprte. Sollten das Buch und vor allem die Listings wi-der Erwarten noch Fehler enthalten, gehen diese alle ausschlielich auf mein(Fehler-)Konto.

Kontakt zum Autor und Verlag

Wie immer freut sich der Autor ber Kritik, Anregungen, Hinweise auf Fehler,Unstimmigkeiten und andere Dinge, und natrlich auch ber Lob. (Bei mehrals drei Komplimenten pro Zuschrift gibt es aber keinen Preisnachlass beiknftigen Bchern diese Zuschriften werden von einem ausgeklgeltenE-Mail-Filter automatisch erkannt und an Herrn Ralf Buschner im Markt+Technik Verlag weitergeleitet, der sich um die Beantwortung kmmern wird.)Sie erreichen den Autor praktisch rund um die Uhr unter:

[email protected]

Bei allgemeiner Kritik, Fragen, Anregungen, Problemen mit der Buch-CDoder Reklamationen wenden Sie sich bitte direkt an den Verlag:

[email protected]

26

Einleitung

Sollte es Korrekturen und ergnzende Hinweise geben, finden Sie diese aufder Homepage des Buchs:

www.activetraining.de/jlvbnet

Hier stehen auch die Beispiele des Buchs zum Download bereit (fr den Fall,dass die Buch-CD nicht auffindbar sein sollte).

Vorbereitungen fr .NET und das Buch

In dieser kurzen bersicht geht es um die notwendigen Vorbereitungen, damitIhr Computer .NET-fhig wird. Weitere Informationen zum .NET-Frame-work-SDK lesen Sie in Anhang C.

Das .NET-Framework-SDK installieren

Voraussetzung dafr, um Visual Basic .NET-Programme kompilieren und aus-fhren zu knnen, ist die Installation das .NET-Framework-SDK, das nebenden Laufzeitdateien auch die Compiler enthlt (mehr dazu in Anhang C). Siefinden das .NET-Framework-SDK auf der Buch-CD oder (falls die CD aus ir-gendeinem Grund nicht griffbereit sein sollte) im Internet unter der allge-meinen Adresse http://msdn.microsoft.com/net. (Der Download ist ca. 130Mbyte gro, was mit z.B. T-DSL, ADSL oder Kabelmodem relativ problemloszu bewltigen ist und nicht die ganze Nacht dauert das SDK kann aber auchin zehn Portionen 13 Mbyte heruntergeladen werden.)

Die Installation des .NET-Framework-SDK ist sehr einfach. Starten Sie dieExe-Datei auf der Buch-CD (sie trgt den Namen NetFramework-SDK_10.exe) oder die heruntergeladene Datei. Alles weitere passiert dannautomatisch.

Hard- und Softwarevoraussetzungen

Da das .NET-Framework-SDK keine grafische Oberflche besitzt, ist es sehrviel anspruchsloser als Visual Studio .NET. Ein Pentium 350-MHz-Prozessor(oder ein vergleichbarer Prozessor) mit 64 Mbyte RAM sollten (mehr als) aus-reichend sein, um alle Beispiele in diesem Buch problemlos kompilieren zuknnen. Fr Visual Studio .NET sind die Hardwarevoraussetzungen etwas h-her. Hier bentigt der Computer vor allem mehr Arbeitsspeicher (mindestens128 Mbyte). Auch die Festplatte sollte grozgig bemessen werden, denn diekomplette Installation belegt ber ein 1 Gbyte und stt damit in neue Dimen-sionen vor. (Schuld daran ist aber in erster Linie die umfangreiche Dokumen-tation.)

27

Einleitung

Bei den Softwarevoraussetzungen ist die Angelegenheit relativ simpel: Vor-ausgesetzt wird mindestens Windows NT 4.0 mit Service Pack 6a oder Win-dows 2000 Professional. Es ist wichtig, zu unterscheiden, dass .NET-Anwen-dungen (sofern sie keine Komponenten voraussetzen, die nur unter Windows2000/XP zur Verfgung stehen) auch unter Windows 98 laufen. LediglichWindows 95 bleibt komplett auen vor und muss ersetzt werden.

1

Der Aufruf des Kommandozeilencompilers

Alle Beispiele in diesem Buch (mit Ausnahme des letzten Beispiels in Kapitel14) sind (relativ) einfache Konsolenprogramme, die sich mit dem Visual Basic.NET-Kommandozeilencompiler Vbc.exe bersetzen lassen. Das Ergebnis iststets eine Exe-Datei (und in Ausnahmefllen auch eine DLL-Datei). Hier einBeispiel fr einen Aufruf von Vbc.exe:

vbc HalloWelt.vb

Wenn Sie das Programm Vbc.exe (das ist der Visual Basic .NET-Compiler) inder Eingabeaufforderung aufrufen, wird die Datei HalloWelt.vb kompiliert.Das Ergebnis ist eine Datei mit dem Namen HalloWelt.exe. Dies ist ein.NET-Programm, das aber trotzdem durch Eingabe seines Namens zur Aus-fhrung gebracht wird.

Und wieso kann Vbc.exe so ohne weiteres aufgerufen werden? Es geht, weilsich die Datei im Verzeichnissuchpfad befindet, der ber die Umgebungsvari-able Path abgefragt und gesetzt werden kann. Dafr sorgt die Installation des.NET-Framework-SDK. Sollte dies wider Erwarten nicht geschehen sein (et-wa, weil die Installation nicht bis zum Ende durchlief) oder der neue Wert derPath-Variablen wieder berschrieben wurde, muss der Pfad nachtrglich wie-derhergestellt werden (bei Windows 2000/XP in den Systemeigenschaften im Register Erweitert). Der Verzeichnispfad der .NET-Compiler lautet %sys-temroot%\Microsoft.NET\Framework\v1.0.3317. Die Tools des .NET-Framework-SDK befinden sich in einem anderen Verzeichnis, es lautet \Pro-gramme\Microsoft Visual Studio.NET\FrameworkSDK\Bin.

Die kompletten Laufzeitumgebungen fr .NET sind etwa 20 Mbyte gro.Das bedeutet jedoch nicht, dass diese Dateien mit jedem Visual Basic .NET-Programm zusammen ausgeliefert werden mssen (das wre auf die Daueretwas unpraktisch). Es bedeutet lediglich, dass diese Dateien einmalig auf ei-nem anderen Computer installiert werden mssen. Alle weiteren .NET-Pro-gramme setzen auf diesen Laufzeitdateien auf. Der Umfang der Exe-Dateikleiner Visual Basic .NET-Programme betrgt lediglich einige Kbyte. In die-sem Punkt hat sich also nicht allzu viel gendert.

28

Einleitung

Abb. 0.1:Unter Umstn-

den muss derVerzeichnis-

suchpfadnachtrglichgesetzt oder

gendertwerden

Wenn der Compiler Klassen scheinbar nicht finden kann

In einigen Fllen spricht ein Visual Basic .NET-Programm .NET-Klassen an,die nicht in der Hauptbibliothek mscorlib.dll (diese ist automatisch dabeiund muss beim Kompilieren nie angegeben werden) enthalten sind. Dazu ge-hren zum Beispiel jene Klassen, die in System.dll enthalten sind. Damit die-se Programme fehlerfrei bersetzt werden, muss die zustndige Bibliothekbeim Kompilieren ber die Option /r eingebunden werden:

vbc TestApp.vb /r:system.xml.dll

Durch diesen Aufruf wird die Bibliothek system.xml.dll mit eingebunden (dergenaue Pfad der Dll-Datei muss nicht angegeben werden, da sich diese imGlobal Assembly Cache befindet und der Compiler daher in der Lage ist, siezu lokalisieren). Zu welcher Datei (der Fachausdruck lautet Assembly) eineKlasse letztendlich gehrt, erfahren Sie aus der Dokumentation zum .NET-Framework-SDK (oder ber den Objektbrowser von Visual Studio .NET). Beiden Beispielen wird im Buch selbstverstndlich darauf hingewiesen, welchezustzlichen DLLs eingebunden werden mssen.

Ein erster .NET-Check

Are you ready for .NET? Nun, das lsst sich schnell feststellen. Der folgendeSchnelltest stellt fest, ob ein .NET-Programm auf dem Computer ausgefhrtwerden kann:

Schritt 1 ffnen Sie die Eingabeaufforderung (z.B. ber den Ausfhren-Befehl imStartmen und Eingabe von cmd).

29

Einleitung

Schritt 2Starten Sie Notepad durch Eingabe von notepad ready.vb und besttigenSie das Anlegen einer neuen Datei.

Schritt 3Geben Sie die folgendenden Zeilen ein:

Imports System.ConsoleModule basTestSub Main () Writeline ("Hi, ich bin bereit fr .NET am {0}", _ date.now)End SubEnd Module

Schritt 4Speichern Sie die Datei ab. Sie liegt nun unter dem Namen ready.vb vor.

Schritt 5Rufen Sie in der Eingabeaufforderung den Visual Basic .NET-Compiler auf:

vbc ready.vb

Ging alles gut, sollte in der nchsten Zeile der weltbewegende Satz zusammenmit dem aktuellen Datum erscheinen.

Abb. 0.2:Das tnt gut, der erste .NET-Test ist be-standen das Visual Basic. NET-Pro-gramm meldet sich

Falls etwas schief geht

Auch wenn die meisten Beispiele in diesem Buch sehr simpel sind, heit dasnicht, dass sie auf Anhieb funktionieren werden (sie wurden natrlich getestet,bevor sie auf die Buch-CD gelangten). Insbesondere Ihre eigenen Beispiele wer-den unter Umstnden ein paar Anlufe bentigen. Es gibt grundstzlich zweiKategorien von Fehlern. Solche, die bereits beim Kompilieren erkannt wer-den, und solche, die sich erst whrend der Programmausfhrung auswirken. Imersten Fall zeigt der Compiler eine mehr oder weniger umfangreiche Fehler-meldung an (es knnen auch mehrere sein). Sie mssen nun den oder die Feh-ler lokalisieren, korrigieren, die Datei speichern und den Compiler erneut star-ten. (Da die Fehlermeldung in der Regel auch die Zeilennummer der Zeileumfasst, in der der Fehler auftrat, ist es relativ einfach.) Im zweiten Fall knnenSie zunchst gar nicht viel machen, denn ein Fehler, der whrend der Program-

30

Einleitung

mausfhrung auftritt, fhrt zu einer Ausnahme, und die ruft automatisch den sogenannten Debugger auf. Es erscheint eine Dialogbox, in der Sie gefragt wer-den, ob Sie das Programm debuggen mchten. Antworten Sie auf diese Fragestets mit No, da das Debuggen in diesem Buch nicht behandelt wird. Damitwird die Programmausfhrung beendet und die Fehlermeldung, die zu der Aus-nahme gefhrt hat, wird noch einmal angezeigt, so dass Sie einen gewissen An-haltspunkt erhalten. Diese Laufzeitfehler sind keine Fehler im Programmtext,sondern Befehle, die zu einer Situation fhrten, in denen der Compiler nichtweiter wei. Eine solche Situation knnen Sie probeweise herbeifhren, indemSie in das kleine Beispielprogramm aus dem letzten Abschnitt vor dem BefehlEnd Sub die folgenden beiden Befehle eingeben:

Dim o As ObjectWriteline(o.ToString)

Speichen Sie die Datei wieder ab, rufen Sie den Compiler vbc.exe erneut aufund fhren Sie die resultierende Datei ready.exe aus. Zwar erscheint die Aus-gabe, doch anschlieend (das Rumpeln der Festplatte deutet es bereits dezentan) ffnet sich das Debugger-Dialogfeld: Ein Laufzeitfehler ist aufgetreten,weil Sie versucht haben, den Inhalt einer noch leeren Objektvariablen o mitToString auszugeben. Diese kleinen (Flchtigkeits-)Fehler werden Ihnen amEnde des Buchs nur noch sehr selten unterlaufen.

Abb. 0.3:Upps, da istwohl etwas

schiefgelaufen wenn dieseDialogbox er-

scheint, hat dasVisual Basic

.NET-Pro-gramm einen

Laufzeitfehlerverursacht

31

KAPITEL 1

Das erste Visual Basic .NET-Beispiel

Nachdem Ihr Computer nun hoffentlich ready for .NET ist, sollen Sie in die-sem Kapitel Ihre ersten kleinen Visual Basic .NET-Programme umsetzen undauf diese Weise einen ersten Eindruck von der Programmierung unter .NETerhalten. Auerdem verschafft Ihnen dieses Kapitel die lernpdagogisch sehrwichtigen Erfolgserlebnisse. Sie tippen ein Beispiel ab, rufen den Visual Basic.NET-Compiler auf, um es zu kompilieren, starten die entstandene Exe-Dateiund es funktioniert. So sollte die Programmierung immer aussehen. Dennochbesitzen die bungen auch einen praktischen Nutzen. Es macht einen groenUnterschied, ob man mehrere hundert Seiten ber .NET liest oder ob man einpaar Zeilen eintippt und abspeichert, den Compiler darber laufen lsst, be-friedigt registriert, dass es fehlerfrei kompiliert wurde, das Programm startetund feststellt Heiligs Blechle, das ist ja gar nicht so kompliziert.

Die Themen fr dieses Kapitel:

Auch .NET kann Hallo sagen

Der allgemeine Aufbau einer Konsolenanwendung

Ein paar Spezialitten in .NET

Die wichtigsten Compileroptionen

1.1 Auch .NET kann Hallo sagen

Es hat keinen Sinn, es gibt keine Alternativen und diese Tatsache nicht zu ak-zeptieren, wre pure Zeitverschwendung. Die Rede ist vom Hallo, Welt-Pro-gramm, das Programmierer wie Buchautoren gleichermaen benutzen, um

32

Das erste Visual Basic .NET-Beispiel1zu zeigen, dass alles doch wie immer ganz einfach ist. Auch wenn das Hallo,Welt-Programm vor kurzem sein 30-jhriges Bestehen gefeiert haben drfte1

und seine Wirkung inzwischen alles andere als originell ist, ist es immer nochzeitgem. Der Programmierer tippt ein paar Zeilen ein, drckt auf einenKnopf, sieht ein knappes Hallo, Welt (oder einen vergleichbar inhaltsschwe-ren Satz auf dem Bildschirm) und ist zufrieden.

Fhren Sie zur Umsetzung eines Hallo, Welt-Programms in Visual Basic.NET die folgenden Schritte aus:

Schritt 1 Starten Sie Notepad, den FAS Script Editor, Emacs oder einen anderenEditor.

Schritt 2 Tippen Sie alle Zeilen aus Listing 1-1 ab. Allerdings ohne die Zeilennummern(etwa 1:), die jeder Befehlszeile vorausgehen und lediglich zur Orientierung in-nerhalb des Listings dienen (innerhalb der Visual Studio .NET-Entwicklungs-umgebung ist es ebenfalls mglich, Zeilennummern anzuzeigen bei der Ein-gabe eines Listings ber einen anderen Editor werden Zeilennummern alsSprungmarken interpretiert).

Schritt 3 Speichern Sie die Datei unter dem Namen HalloWelt.vb ab, am besten in ei-nem Verzeichnis, das sich ber die Kommandozeile leicht erreichen lsst.

Schritt 4 ffnen Sie die Eingabeaufforderung, wechseln Sie in das Verzeichnis, in demsich die Datei HalloWelt.vb befindet, und starten Sie den Visual Basic .NET-Compiler wie folgt:

vbc hallowelt.vb

Enthlt die Quelltextdatei keine Tippfehler, wandelt der Compiler die Datei ineine Datei mit dem Namen HalloWelt.exe um. (Das Ergebnis wird in der.NET-Welt auch als Assembly bezeichnet mehr dazu in Kapitel 2.)

Schritt 5 Geben Sie in die Eingabeaufforderung HalloWelt ein, um die Exe-Datei zustarten. Kurz darauf sollte eine kleine Ausgabe erscheinen.

Das wars. Sie haben Ihr erstes Visual Basic .NET-Programm erfolgreich um-gesetzt. Auch wenn es winzig klein ist und noch nicht ansatzweise erahnenlsst, warum um .NET so viel Aufhebens gemacht wird (keine Sorge, Sie ms-sen nicht alle Ihre Programme mit Notepad eintippen), macht es deutlich,dass sich auch bei der .NET-Programmierung alles um einfache und elemen-tare Dinge dreht. Wesentlich komplizierter werden die weiteren Beispiele indiesem Buch auch nicht werden, wobei Sie am Ende des Buchs aber alles Wis-

1. Soweit ich mich erinnern kann, wurde Hallo, Welt in den Bell Laboratories in Zusammen-hang mit der Entwicklung von Unix oder einem seiner Vorlufer erfunden. Wurde das Pro-gramm auf einen neuen Computer bertragen, muss man ja irgendwie feststellen knnen,dass es funktioniert. Dies geschah durch Ausgabe eines Hello, world (auf Deutsch Hallo,Welt). Die Ausgabe erfolgte brigens auf einer Art Fernschreiber, was im Jahre 1971 absolutstate of the art gewesen sein drfte.

33

Auch .NET kann Hallo sagen

senswerte ber die Grundlagen der Programmierung mit Visual Basic .NETgelernt haben.

Listing 1-1:Das Hallo, Welt-Pro-gramm in Visual Basic .NET

1:' -----------------------------------------------2:' Das Hallo, Welt-Programm in Visual Basic .NET3:' Jetzt lerne ich Visual Basic .NET4:' -----------------------------------------------

5:Imports System.Console

6:Class App

7: Shared Sub Main()8: WriteLine("Hallo, liebe Welt - es ist jetzt {0}",Date.Now.ToString("hh:mm:ss"))9: ReadLine()10: End Sub11:End Class

Abb. 1.1:Zweifelsohne ein weiteres Hallo, Welt-Programm

Die Erklrungen zum Hallo, Welt-Programm finden Sie in Tabelle 1.1.

Tabelle 1.1:Die Erklrun-gen zu Listing 1-1

Buch-CD: vbnet0101.vb

Zeile Was passiert hier?

5 Der Imports-Befehl fgt einen Namensraum zum Programm hinzu. Der Namensraum ist System, die Klasse heit Console, so dass allen Methoden der Klasse (etwa WriteLine) nicht der Namensraum vorangestellt werden muss.

6 Jedes Visual Basic .NET-Programm besteht aus mindestens einer Klasse, die ber diesen Class-Befehl definiert wird.

7 Jedes Visual Basic .NET-Programm muss einen Startpunkt besitzen, der aus der Prozedur (Methode) Main besteht. Das Schlsselwort Shared sagt, dass die Methode auch aufgerufen werden kann, ohne dass die Klasse instanziert werden muss.

34

Das erste Visual Basic .NET-Beispiel1

1.2 Der allgemeine Aufbau einer Konsolenanwendung

In diesem Buch dreht sich fast alles um Konsolenanwendungen (lediglich Ka-pitel 14 beweist, dass man unter .NET auch mit Fenstern jonglieren kann unddie guten alten Steuerelemente nicht ausgestorben sind). Eine Konsolenan-wendung ist ein Visual Basic .NET-Projekttyp unter vielen, der meistens nuraus einem Modul besteht (wenngleich dies keine Voraussetzung ist) und keinegrafische Benutzeroberflche besitzt (es ist aber grundstzlich kein Problem,ein Fenster anzuzeigen dazu muss lediglich eine Instanz der Klasse Form imNamensraum System.Windows.Forms eingebaut werden). Konsolenan-wendungen werden in der Eingabeaufforderung ausgefhrt, fhren ihre Aus-gaben in der Eingabeaufforderung durch und nehmen Eingaben ber die Tas-tatur entgegen. Die Maus kann also getrost beiseite geschoben werden. Wassich zunchst nach einer recht drgen Angelegenheit anhren mag (keineFenster), ist gerade fr das Lernen von Visual Basic .NET sehr praktisch. Kon-solenprogramme lassen sich schnell mit Notepad oder einem komfortablerenEditor eintippen und sind prima fr kleinere Programme geeignet, die keineaufwndige Fensteroberflche bentigen. Geradezu ideal sind sie fr das Er-lernen einer .NET-Programmiersprache, denn sie beschrnken sich auf das,was durch das Programm erklrt werden soll, und enthalten keinen berfls-sigen Ballast, der das Verstndnis erschwert. Konsolenanwendungen sindauch gut dazu geeignet, etwas kompliziertere Sachverhalte, wie Vererbung,Threading oder den Zugriff auf XML-Dateien, zu veranschaulichen. Konso-lenanwendungen laufen unter allen Windows-Anwendungen und sind ein spe-zieller Anwendungstyp, der von der Win32-API untersttzt wird.

8 Die WriteLine-Methode gibt einen Text in der Eingabeaufforderung aus. {0} ist ein Platzhalter fr die aktuelle Uhrzeit, die auf die Zeichenkette folgt. Sie wird ber die Now-Methode ausgegeben, die einen Wert vom Typ Date-Time liefert, der sowohl die aktuelle Uhrzeit als auch das aktuelle Datum wiedergibt. Indem die Methode TimeOfDay der Date-Klasse auf dem DateTime-Wert aufgerufen wird, wird nur die Uhrzeit ausgegebena.

9 Die ReadLine-Methode wartet auf eine beliebige Eingabe, die durch die -Taste abgeschlossen wird.

10 Hier ist die Prozedur zu Ende.

11 Hier sind die Klasse und damit auch das Programm zu Ende.

a. Wenn Sie der Meinung sind, dass es sehr kompliziert zu sein scheint, die Uhrzeit auszugeben,haben Sie im Moment natrlich Recht. Spter relativiert sich alles wieder ein wenig. Erstensist es gar nicht so kompliziert und zweitens knnen Sie die Uhrzeit auf mindestens ein Dut-zend verschiedene Weisen ausgeben (aber nur, wenn Sie das mchten).

Zeile Was passiert hier?

35

Der allgemeine Aufbau einer Konsolenanwendung

1

1.2.1 Der allgemeine Programmrahmen einer Konsolen-anwendung

In diesem Abschnitt wird der allgemeine Rahmen einer Konsolenanwendungvorgestellt. Diesen Rahmen knnen Sie praktisch fr alle bungen, um die esin diesem Buch gehen wird, benutzen.

Listing 1-2:Ein allgemei-ner Programm-rahmen fr Visual Basic .NET-Pro-gramme

' -----------------------------------------------' Ein allgemeiner Programmrahmen fr Visual Basic .NET' Jetzt lerne ich Visual Basic .NET' Letzte nderung: ' -----------------------------------------------

Imports System.Console

Class App

Shared Sub Main() WriteLine("Alles klar mit Visual Basic .NET - {0}", _ Date.Now.TimeOfDay) ReadLine() End SubEnd Class

Natrlich mssen Sie am Ende nicht die kleine Erfolgsmeldung zusammen mitder aktuellen Uhrzeit ausgeben. Das ist nur ein Vorschlag, der die Stimmungetwas auflockern soll. Die ReadLine-Methode der Console-Klasse sorgt da-fr, dass die Programmausfhrung anhlt und sich das Fenster der Eingabe-aufforderung nicht gleich wieder schliet, nachdem das Programm beendetwurde. Zwingend notwendig ist dieser Befehl aber auch nicht.

0

So war es frher:

Konsolenanwendungen gab es nicht bei Visual Basic 6.0. Das, was dort ei-ner Konsolenanwendung am nchsten kommt, ist ein Standard-Exe-Projekt,das ohne Formular auskommt und mit der Prozedur Main in einem allge-meinen Modul beginnt.

Buch-CD: programmrahmen.vb

Wenn Sie den Rahmen in einer Datei mit dem Namen Rahmen.vb spei-chern und vor dem Start eines neuen Programms in die neue Programmda-tei kopieren, mssen Sie den Rahmen nicht jedes Mal neu eingeben.

36

Das erste Visual Basic .NET-Beispiel1

1.3 Ein paar Spezialitten in .NET

Das Hallo, Welt-Beispiel aus dem letzten Abschnitt hat zwar hoffentlich zueinem schnellen Erfolgserlebnis gefhrt, konnte aber noch nichts von denneuen Mglichkeiten andeuten, die mit .NET im Allgemeinen und VisualBasic .NET im Speziellen einhergehen. Dieser Abschnitt stellt ein paar Kon-solenanwendungen vor, die etwas mehr in die Tiefe gehen und deutlich ma-chen, auf was es bei der Programmierung unter .NET ankommt. Damit keineMissverstndnisse entstehen: Diese Beispiele sollen lediglich einen Ausblickauf kommende Themen in diesem Buch geben, sie werden an dieser Stellenoch nicht erklrt. Probieren Sie die Beispiele der Reihe nach aus, freuen Siesich ber den kleinen Aha-Effekt, der sich hoffentlich einstellt, machen Siesich aber ber die Details und das genaue Wie und Warum noch keine Gedan-ken. Die Hintergrnde werden in den spteren Kapiteln des Buchs erklrt.

1.3.1 Dateizugriffe in Visual Basic .NET

Der folgende Abschnitt veranschaulicht anhand eines fr jeden Programmie-rer vertrauten Themas, wie durch Einbeziehen der .NET-Basisklassen Aufga-ben gelst werden, fr die unter frheren Visual Basic-Versionen fest einge-baute Befehle und Funktionen verwendet wurden. Diese Befehle gibt es beiVisual Basic .NET nicht mehr stattdessen kommen die beraus vielseitigenBasisklassen zum Einsatz. Die Programmierung wird dadurch weder kompli-zierter noch anders und auch nicht unbedingt einfacher. Man muss nur ver-stehen, dass Visual Basic .NET keine eingebauten Funktionen mehr besitzt,da es dafr die Basisklassen gibt. Die vertrauten Funktionen frherer Versio-nen stehen bis auf wenige Ausnahmen trotzdem zur Verfgung, nur werdensie ber eine Kompatibilittsklasse angeboten wenn Sie zum Beispiel die al-len Visual Basic-Programmierern beraus vertraute Rnd-Funktion aufrufen,so rufen Sie in Wirklichkeit eine Methode der Microsoft.VisualBasic-Kompa-tibilittsklasse auf. Das Resultat ist dasselbe, so dass viele Visual Basic-Pro-grammierer den Unterschied am Anfang gar nicht bemerken werden undauch nicht bemerken mssen. Genug der Vorrede, Listing 1-3 enthlt ein klei-nes Visual Basic .NET-Programm, das den Inhalt der (Text-)Datei Msdos.sysausgibt (unter Windows 9x sollte stattdessen die Datei Config.sys benutztwerden). Auerdem wird der Zeitpunkt des letzten Zugriffs auf die Datei an-gezeigt. Das ffnen und Auslesen der Datei bernimmt kein Befehl bzw. kei-ne eingebaute Funktion. Es wird vielmehr ber ein Objekt der Klasse Text-Reader erledigt, das ber die OpenText-Methode eines File-Objekts angelegtwird. Anschlieend liest die ReadToEnd-Methode des TextReader-Objektsden gesamten Inhalt ein, der ber die WriteLine-Methode der Console-Klas-se gleich wieder ausgegeben wird. Der Zeitpunkt des letzten Zugriffs wird berdie GetLastAccessTime-Methode des File-Objekts geliefert. Ist Ihnen aufge-

37

Ein paar Spezialitten in .NET

fallen, wie oft in den letzten drei Stzen die Begriffe Klasse und Objekt ver-wendet wurden? Praktisch alles ist bei Visual Basic .NET objektorientiert undbasiert auf Klassen und Objekten (der kleine, aber nicht ganz unwichtige Un-terschied wird in Kapitel 6.5 erklrt).

Listing 1-3:Einfacher Dateizugriff ber eine Text-Reader-Klasse

' -----------------------------------------------' Beispiel fr einen Dateizugriff' Jetzt lerne ich Visual Basic .NET' -----------------------------------------------

Imports System.ConsoleImports System.IO

Class App

Shared Sub Main() Dim stPfad As String = "C:\Msdos.sys" Dim Fi As TextReader = File.OpenText(stPfad) WriteLine("Letzter Zugriff: {0}", _ File.GetLastAccessTime(stPfad)) WriteLine(Fi.ReadToEnd) Fi.Close() ReadLine() End Sub

End Class

1.3.2 XML-Dateien lesen und auswerten

XML ist eines jener Schlagworte, die immer wieder in Zusammenhang mit.NET, Web Services und anderen modernen Themen erwhnt werden. Wasan XML so toll ist und wie es genau funktioniert, wird in Kapitel 12 erklrt.Das folgende Beispiel zeigt, wie sich eine XML-Datei ber eine .NET-Basis-klasse einlesen und verarbeiten lsst.

Auch wenn dies bereits mit frheren Visual Basic-Versionen unter Einbezie-hung des XML-Parsers in Gestalt einer COM-Bibliothek auf eine sehr hnli-che Weise mglich war, bieten die .NET-Basisklassen drei wichtige Vorteile:

1. Die XML-Untersttzung ist keine Option, sondern ein fester Bestandteilder Programmierumgebung.

2. Die XML-Klassen sind keine Fremdkrper, sondern werden von den bri-gen Klassen verstanden.

3. Die XML-Untersttzung ist umfassender.

Buch-CD: vbnet0103.vb

38

Das erste Visual Basic .NET-Beispiel1 Listing 1-4:

Eine einfacheXML-Datei

Obsession 3619.2 The immunity syndrom 4307.1 Return to tomorow 4768.3 Patterns of Force 2534.0

Listing 1-5:Das Visual

Basic .NET-Programm liestden Inhalt derXML-Datei ein

' -----------------------------------------------' Ein kleines XML-Beispiel' Jetzt lerne ich Visual Basic .NET' -----------------------------------------------Imports System.XmlImports System.Console

Class App

Shared Sub Main() Dim obXMLDoc As XmlDocument = New XmlDocument() Dim stXMLPfad As String = _ "C:\Eigene Dateien\JLVBNET_Beispiele\Startrek.xml" obXMLDoc.Load(stXMLPfad) Dim obRoot As XmlNode = obXMLDoc.DocumentElement Dim obXMLElement As XmlNode For Each obXMLElement In obRoot.ChildNodes WriteLine("Folge Nr. {0}", _ obXMLElement.Attributes("Nr").Value) WriteLine(obXMLElement.ChildNodes(0).InnerText) Next

Buch-CD: startrek.xml

Buch-CD: vbnet0105.vb

39

Ein paar Spezialitten in .NET

WriteLine("Alles klar mit .NET und XML!") ReadLine() End SubEnd Class

Wenn Sie das Listing in einer Datei mit der Erweiterung .vb speichern, denCompiler aufrufen und die resultierende Exe-Datei starten, wird der Inhaltaller -Markierungen in der Eingabeaufforderung ausgegeben (gege-benenfalls mssen Sie den Pfad der XML-Datei StarkTrek.xml ndern).

Lsst sich das Programm nicht kompilieren und erhalten Sie stattdessen vieleFehlermeldungen? In diesem Fall kann der Compiler das Assembly Sys-tem.xml.dll nicht finden, in dem die XML-Klassen enthalten sind. Sie mssenes beim Aufruf ber die Option /r angeben:

vbc vbnet0105.vb /r:system.xml.dll

1.3.3 Herunterladen einer HTML-Datei von einem Webserver

Ein Grund, warum Microsoft in den letzten Jahren mehrere Milliarden Euro indie Entwicklung von .NET gesteckt hat, ist der, dass Internetanwendungeneinfacher zu programmieren sein sollen1. Auch wenn das Thema ASP .NETund die Programmierung von Webanwendungen in diesem Buch nicht behan-delt wird (dafr gibt es einen eigenen Band in der Jetzt lerne ich-Reihe vonMarkt+Technik), soll das folgende Beispiel zeigen, wie sich eine (beliebige)Datei von einem (beliebigen) Webserver herunterladen lsst. Spektakulr istdabei weniger der Zugriff auf das Internet (das ging mit frheren Visual Basic-Versionen auch schon), sondern die nahtlose Integration durch die .NET-Ba-sisklassen.

Das folgende Beispiel setzt voraus, dass der Internet Information Server (IIS)entweder lokal installiert oder ber das Netzwerk erreichbar ist und ein virtu-elles Verzeichnis angelegt wurde (in dem Listing heit es TestWeb), das eineDatei enthlt, die in der URL angeben wird. Alternativ muss eine Verbindungzum Internet bestehen und eine beliebige URL angegeben werden (von derdie Standarddatei heruntergeladen wird, meistens heit sie Default.htm,wenn keine Datei explizit angegeben wird).

Schritt 1Starten Sie Notepad, geben Sie die Befehle aus Listing 1-6 ein und speichernSie Datei unter dem Namen Htmldownload.vb.

1. Allein aus diesem Grund steht es praktisch auer Frage, dass sich .NET durchsetzen wird.Und wir Programmierer erhalten das alles im Rahmen des .NET Framework SDK und derASP .NET-Dateien umsonst. Ist Microsoft nicht nett?

40

Das erste Visual Basic .NET-Beispiel1Schritt 2 Kompilieren Sie Datei und fhren Sie sie aus. Hierfr ist der Aufruf des Kom-

mandozeilencompilers in der Form

vbc.exe htmldownload.vb /r:system.dll

notwendig. Wenn alles klappt, sollte kurz danach der Inhalt der heruntergela-denen (HTML-)Datei in der Eingabeaufforderung ausgegeben werden.

Listing 1-6:Dieses Visual

Basic .NET-Programm ldteine Datei von

einem Web-server herunter

' -----------------------------------------------' Download einer HTML-Datei' Jetzt lerne ich Visual Basic .NET' -----------------------------------------------Imports SystemImports System.ConsoleImports System.NetImports System.IO

Class App Shared Sub Main() Try Dim obWeb As HttpWebRequest = _ HttpWebRequest.Create _ ("http://localhost/TestWeb") Dim obResp As HttpWebResponse = obWeb.GetResponse() Dim obSt As Stream = obResp.GetResponseStream() Dim obStRead As StreamReader = New _ StreamReader(obSt) Dim sZeile As String Do sZeile = obStRead.ReadLine() WriteLine(sZeile) Loop Until obStRead.Peek() = -1 Catch obEx As SystemException WriteLine("Laufzeitfehler: {0}", obEx.Message) Finally WriteLine("Alles klar mit .NET!") End Try End SubEnd Class

1.3.4 Zugriff auf die Metadaten eines Assembly

Was sich zunchst recht trocken anhren mag, ist bei .NET eine hochinteres-sante Angelegenheit. Smtliche Informationen ber die Typen eines Pro-gramms (das heit die Klassen und deren Eigenschaften) stehen auch zurLaufzeit zur Verfgung. Es ist zum Beispiel berhaupt kein Problem, ein As-

Buch-CD: vbnet0106.vb

41

Ein paar Spezialitten in .NET

sembly (also ein .NET-Programm) zur Laufzeit zu laden, seine Klassen nacheiner bestimmten Methode zu durchsuchen, ihre Parameternamen und Da-tentypen abzufragen und die Methode anschlieend aufzurufen. Diese Infor-mationen werden als die Metadaten des Programms bezeichnet1. Genauso istes mglich, ein Assembly komplett zur Laufzeit anzulegen, und vieles mehr.Das folgende Beispiel fhrt eine ntzliche Aufgabe durch, denn das Pro-gramm zhlt alle Typen (Klassen) zusammen, die in allen Assemblies enthal-ten sind, die im .NET-Verzeichnis zu finden sind.

Schritt 1Starten Sie Notepad, geben Sie den Inhalt aus Listing 1-7 ein und speichernSie das Ganze unter dem Namen AssemblyLister.vb.

Schritt 2Passen Sie den Verzeichnispfad des .NET-Verzeichnisses an. Es ist ein Unter-verzeichnis des Windows-Verzeichnisses.

Schritt 3Kompilieren Sie das Programm durch den Aufruf des Visual Basic .NET-Compilers:

vbc AssemblyLister.vb

Schritt 4Starten Sie das Programm. Ging alles gut, sollten eine Reihe von Verzeichnis-pfaden ausgegeben werden. Die letzte Zeile enthlt die Gesamtzahl aller Ty-pen (Klassen), die in allen durchsuchten Assemblies gefunden wurden.

Listing 1-7:Das folgende Visual Basic .NET-Pro-gramm zhlt alle Typen in allen .NET-Assemblies zusammen

' -----------------------------------------------' Typenzhlung in Assemblies' Jetzt lerne ich Visual Basic .NET' -----------------------------------------------

Imports SystemImports System.IOImports System.ConsoleImports System.Reflection

Class Test Shared Sub Main() Dim stPfad As String = _ "C:\WINXP\Microsoft.NET\Framework\v1.0.3317" Dim stDatei As String Dim aDateien() = Directory.GetFiles(stPfad, _ "system*.dll") Dim Typen() As Type Dim inSumme As Integer Dim t As Type

1. Unter frheren Visual Basic-Versionen bernahmen die Typenbibliotheken eine hnliche Auf-gabe, nur nicht so weitreichend.

Buch-CD: vbnet0107.vb

42

Das erste Visual Basic .NET-Beispiel1 Dim obAss As [Assembly] For Each stDatei In aDateien Try obAss = [Assembly].LoadFrom(stDatei) Typen = obAss.GetTypes() WriteLine("Anzahl Typen in {0} {1}", _ stDatei, Typen.Length) inSumme += Typen.Length Catch WriteLine("{0} ist kein gltiges Assembly!", _ stDatei) End Try Next WriteLine("Gesamtzahl Typen: {0}", inSumme) ReadLine() End SubEnd Class

1.3.5 Aufruf einer Windows-API-Funktion

Zum Schluss ein kleines Beispiel, das vor allem fr jene erfahrenen VisualBasic-Programmierer gedacht ist, die schon einiges ber Visual Basic .NETgehrt haben und nun vielleicht befrchten, dass alles anders ist und keinerder vertrauten Programmbefehle mehr bernommen werden darf. Das ist na-trlich nicht so, Visual Basic .NET ist bei weitem nicht so anders wie es viel-leicht zunchst den Anschein haben mag. Auch API-Funktionen sind weiter-hin erlaubt, sie werden (im Kompatibilittsmodus) praktisch auf die gleicheWeise aufgerufen (den Declare-Befehl gibt es auch bei Visual Basic .NET).Das folgende Beispiel ruft eine beliebte Win32-API-Funktion auf. Statt einesDeclare-Befehls (der fr Visual Basic .NET 1:1 bernommen wurde) verwen-det es die wahre .NET-Technik ber das -Attribut, die zwar einwenig anders aussieht, aber alles andere als schwerer anzuwenden ist.

Listing 1-8:Der Aufrufeiner API-

Funktion inVisual Basic

.NET

' -----------------------------------------------' Aufruf einer API-Funktion mit DllImport' Jetzt lerne ich Visual Basic .NET' -----------------------------------------------Imports SystemImports System.Runtime.InteropServices

Class App Public Shared Function PlayWav _ (ByVal lpszName As String, ByVal dwFlags As Integer) As Integer End Function

Buch-CD: vbnet0108.vb

43

Die wichtigsten Compiler-Optionen

Shared Sub Main() Dim stPfad As String = "C:\Eigene Dateien\Ufo.wav" Dim nRet As Integer nRet = PlayWav(stPfad, 0) End Sub

End Class

Wenn Sie das Listing in einer Datei mit der Erweiterung .vb speichern, denCompiler aufrufen und die resultierende Exe-Datei starten, wird die DateiUfo.wav im Verzeichnis Eigene Dateien (gegebenenfalls mssen Sie den Pro-grammpfad der Wav-Datei ndern oder eine andere Datei auswhlen) abge-spielt.

1.4 Die wichtigsten Compiler-Optionen

Halten wir kurz inne, um uns dem Visual Basic .NET-Compiler zuzuwenden(mit der Programmierung geht es im nchsten Abschnitt weiter). Der Compi-ler ist jenes Programm, das allgemein aus einer Textdatei Maschinencodemacht. Wie Sie in Kapitel 2 noch sehr viel ausfhrlicher erfahren werden,trifft dies auch auf den Visual Basic .NET-Compiler zu. Allerdings ist die Ma-schine, um die es geht, nicht der Prozessor Ihres Computers, sondern dieCommon Language Runtime (CLR), das heit eine virtuelle Maschine, dieauf Software basiert (daher das Attribut virtuell). .NET-Compiler erzeugenkeinen Maschinencode, sondern stattdessen Befehle in einer sehr maschinen-nahen Sprache, die als Microsoft Intermediate Language (MSIL bzw. meis-tens nur IL) bezeichnet wird. Auch in diesem wichtigen Punkt werden Sie aufKapitel 2 vertrstet, wo Sie den IL-Code sogar an einem kleinen Beispiel ken-nen lernen werden (wenngleich IL fr die Programmierung in Visual Basic.NET normalerweise keine Rolle spielt). Merken Sie sich vorerst nur, dass derCompiler bei Visual Basic .NET eine unscheinbare Datei mit dem NamenVbc.exe ist, die keine Benutzeroberflche besitzt und daher ber die Kom-mandozeile aufgerufen wird.

Der Visual Basic .NET-Compiler besitzt folgende Eigenschaften:

Er macht aus einer Textdatei (die im Allgemeinen die Erweiterung .vb be-sitzt), je nach Compiler-Option, eine Exe-Datei (Programmdatei) oder Dll-Datei (.NET-Komponente).

Die erzeugte Datei erhlt stets IL-Code (Intermediate Language) mehrdazu in Kapitel 2.

Der Compiler-Lauf kann ber das Tool Nmake aus dem .NET-Frame-work-SDK und eine Textdatei gesteuert werden, die unter anderem dieNamen der zu kompilierenden Dateien enthlt. Auf diese Weise lassen

44

Das erste Visual Basic .NET-Beispiel1sich mehrere Dateien auf einmal bequem kompilieren (dies wird fr dieBeispiele in diesem Buch aber keine Rolle spielen).

3Der folgende Aufruf des Visual Basic .NET-Compilers kompiliert die DateiHallovb.vb, wobei das resultierende Assembly den Namen FirstApp.exe er-halten soll:

vbc Hallovb.vb /out:FirstApp

Tabelle 1.2:Die Compiler-Optionen des

Visual Basic.NET-Com-

pilers imberblick

Option Bedeutung

/out:file Gibt den Namen der Ausgabedatei an, falls diese vom Namen der Quelldatei abweichen soll.

/target:exe Legt fest, dass eine Konsolenanwendung erstellt werden soll (Standardeinstellung). Abkrzung /t.

/target:winexe Legt fest, dass eine Windows-Anwendung erstellt werden soll.

/target:library Legt fest, dass eine Bibliotheksdatei erstellt werden soll.

/target:module Legt fest, dass lediglich ein Modul (es erhlt die Erweite-rung .NetModule) erstellt werden soll.

/addmodule: Fgt ein Modul zu einem Assembly hinzu.

/recurse: Alle Dateien im aktuellen Verzeichnis und seinen Unter-verzeichnissen einschlieen, die dem Platzhalter entspre-chen.

/reference: Fgt eine oder mehrere Referenzen auf andere Assemb-lies hinzu.

/linkresource: Verknpft die angegebene Datei als eine externe Assem-bly-Ressource.

/resource: Bindet die angegebene Datei als eine Assembly-Ressource ein.

/win32icon: Die angegebene Ico-Datei wird als Programmsymbol der Windows-Anwendung verwendet.

/win32resource: Die angegebene Res-Datei wird als Ressourcen-Datei ein-bezogen.

/optimize[+|-] Schaltet die Compileroptimierung ein oder aus.

/removeintchecks[+|-] Schaltet die berprfung auf Ganzzahlenberlauf ein oder aus.

/debug[+|-] Fgt in das Assembly Debug-Informationen ein (+).

/debug:full Fgt in das Assembly die vollstndigen Debugging-Infor-mationen ein.

/debug:pdbonly Erstellt lediglich eine Pdb-Datei.

/nowarn Warnungen werden deaktiviert.

45

Zusammenfassung

1.5 Zusammenfassung

Visual Basic .NET ist eine durchweg objektorientierte Programmiersprache,bei der jedes Programm mindestens aus einer Klasse besteht und alle verwen-deten Datenelemente wiederum Objekte aus den .NET-Basisklassen sind. DieProgrammierung mit Visual Basic .NET ist grundstzlich nicht schwieriger als

/warnaserror[+|-] Warnungen werden wie Fehler behandelt.

/define: Definiert globale Symbole, die fr die bedingte Kompilie-rung benutzt werden (/d:name=wert).

/imports: Definiert globale Namensrume, die fr alle beteiligten Module gelten.

/optionexplicit[+|-] Schaltet den Befehl Option Explicit ein oder aus.

/optionstrict[+|-] Schaltet den Befehl Option Strict ein oder aus.

/rootname-space:

Definiert den obersten Namensraum fr alle Typen, die in dem Programm verwendet werden.

/optioncompare:binary Setzt den Befehl Option Compare auf Binary (Standard-einstellung).

/optioncompare:text Setzt den Befehl Option Compare auf Text (Standardein-stellung).

/help Listet alle Optionen auf (Kurzform /?).

/nologo Gibt die Begrungszeile nicht aus.

/quiet Es werden keine Meldungen ausgegeben.

/verbose Es werden ausfhrliche Meldungen ausgegeben.

/baseaddress: Gibt die Basisadresse einer Bibliotheksdatei an.

/delaysign[+|-] Schaltet die verzgerte Signierung eines Assembly mit dem privaten Schlssel des Entwicklers ein oder aus.

/keycontainer: Legt den Schlsselcontainer fest, der den starken Namen fr das Assembly enthlt.

/keyfile: Gibt die Datei an, die den starken Namen fr das Assem-bly enthlt.

/libpath: Gibt eine Liste von Verzeichnissen an, die auf Metadaten-verweise durchsucht werden (die Verzeichnisse werden mit einem Semikolon getrennt).

/main: Gibt die Klasse an, die die Main-Prozedur enthlt, die als Programmeinsprungpunkt verwendet wird.

@ Gibt eine Datei an, die die Compiler-Optionen enthlt, die beim Aufruf bergeben werden sollen.

Option Bedeutung

46

Das erste Visual Basic .NET-Beispiel1bei seinen Vorgngerversionen. Im Gegenteil, hat man das Prinzip der Ar-beitsteilung zwischen den relativ einfachen Befehlen und Operatoren der Pro-grammiersprache und den sehr umfangreichen Klassen und Objekten des.NET-Framework erst einmal verstanden, erscheint die Programmierungdeutlich einfacher als in der Vergangenheit.

1.6 F&A

Frage 1-1

Schreiben Sie ein Grundgerst fr ein Visual Basic .NET-Programm, das kei-nen ausfhrbaren Befehl enthlt, sich aber fehlerfrei kompilieren lsst.

Frage 1-2

Mit welcher Dateierweiterung werden Visual Basic .NET-Programme bli-cherweise gespeichert?

Frage 1-3

Wie wird eine Visual Basic .NET-Quelltextdatei in eine Exe-Datei kompiliertund was enthlt die Exe-Datei?

Frage 1-4

Was ist eine Konsolenanwendung und welche Vorteile bietet sie?

Frage 1-5

Welche Rolle spielen die .NET-Basisklassen?

Frage 1-6

Wie heit der typische Ausgabebefehl in einer Konsolenanwendung?

(Alle Antworten und Lsungen finden Sie in Anhang D.)

47

KAPITEL 2

Die .NET-Philosophie

Visual Basic .NET trgt den Zusatz .NET nicht umsonst in seinem Namen.Hinter diesem unscheinbaren Krzel steckt eine brandneue Systemplattform,an der Microsoft einige Jahre gearbeitet hat und die in den kommenden Jah-ren eine sehr wichtige Rolle spielen wird. Auch wenn im Moment noch vielessehr neu und ungewohnt (vielleicht auch ein wenig unntig nach dem MottoWarum alles wieder neu, wenn doch das Vorhandene vollkommen ausrei-chend war?) erscheinen mag, in ein paar Jahren werden die mit .NET einge-fhrten neuen Regeln zum Grundrepertoire eines jeden Windows-Program-mierers gehren (mssen). Aus diesem Grund wird in diesem Kapitel auch miteinfachen Worten erklrt, was .NET ist und warum es so wichtig ist. Da sichmit .NET ganze Bcher fllen lieen (und auch schon gefllt wurden) und indiesem Kapitel eine Einfhrung in Visual Basic .NET im Vordergrund steht,beschrnkt sich dieses Kapitel auf einen berblick. Sehen Sie dieses Kapitelaber bitte nicht als lstiges Pflichtkapitel an, dass man vielleicht kurz ber-fliegt, um es mglichst schnell wieder zu vergessen, da alles ein wenig theo-retisch und langweilig erscheint und keine Beispiele vorkommen. (Es gibt eineAusnahme, bei der es um das Zusammenspiel einer in C# programmiertenKomponente mit einem Visual Basic .NET-Programm geht.) .NET, insbeson-dere das .NET-Framework, sind die Grundlage fr alles, was Sie in VisualBasic .NET umsetzen knnen. Visual Basic .NET ist, wie jede .NET-Program-miersprache, lediglich ein Satz von Befehlen, Schlsselwrtern, Operatorenund Datentypen. Der ganze Rest (und das ist eine ganze Menge) stammt von.NET. Das gilt fr alle wichtigen Eigenschaften, wie die Mglichkeit, Basisklas-sen bei der Definition neuer Klassen zu erweitern (Vererbung) oder whrendder Ausfhrung eines Programms weitere Threads zu starten (Multithreading).Diese werden nicht von der Programmiersprache, sondern von der CLR zur

48

Die .NET-Philosophie2Verfgung gestellt. CLR? Diese wichtige Abkrzung werden Sie am Ende desKapitels auswendig knnen. Das gilt aber vor allem fr die Basisklassen des.NET-Framework, die einen groen Teil der Windows-API und alle Funktio-nen ersetzen, die bei frheren Versionen durch interne Funktionen der Pro-grammiersprache zur Verfgung gestellt wurden. Bei Visual Basic .NET sinddiese Funktionen nicht mehr fest eingebaut, sondern Methoden irgendwel-cher Klassen der .NET-Basisklassen.

Mit Philosophie hat dieses Kapitel natrlich nur indirekt etwas zu tun. Der Be-griff soll lediglich andeuten, dass mit .NET eine etwas andere Sichtweise frdie Dinge der Welt (was die Programmierung angeht) einhergeht und es wie-der einmal viele neue Begriffe gibt, die Programmierer verinnerlichen ms-sen. Allen, die sich bereits vor Jahren mit der Programmiersprache Java (dieeine hnliche Revolution ausgelst hat) beschftigt haben, kennen das bereits,ihnen wird einiges sehr bekannt vorkommen (wenngleich .NET sehr viel mehrals nur eine Kopie der Java-Plattform ist). Allen, die sich seit Jahren gemtlichin der Visual Basic-Ecke eingekuschelt und die restliche Welt der Program-mierung ein wenig aus den Augen verloren haben, wird die neue Philosophieeiniges an Flexibilitt abverlangen, da sich viele vertraute Spielregeln genderthaben und Visual Basic .NET weniger die Version 7.0 von Visual Basic, son-dern eher die Version 1.0 einer neuen Programmiersprache darstellt, die nurzuflligerweise einen vertrauten Namen besitzt. Aber es hilft alles nichts, denSprung auf die .NET-Ebene muss jeder Programmierer absolvieren, auchwenn es am Anfang ein paar Dehn- und Streckbungen erfordert. Am Endewinken sehr viel mehr Mglichkeiten, so dass sich die Mhe in jedem Falllohnt.

Die Themen fr dieses Kapitel:

Was ist .NET?

.NET im Gesamtberblick

Die Rolle der Common Language Runtime (CLR)

IL als die neue Maschinensprache

Die Datentypen des Common Type System (CTS)

Die Basisklassen

Die Rolle der Assemblies

Die Common Language Infrastructure (CLI) fr Linux & Co.

Noch ein Tipp, bevor Sie sich in dieses Kapitel strzen: Sehen Sie es in ers-ter Linie als einen berblick ber .NET aus der Vogelperspektive. Nicht jederAspekt wird von Anfang an verstndlich sein. Lesen Sie das Kapitel vor allemnoch einmal, nachdem Sie sich ausfhrlicher mit der Visual Basic .NET-Pro-

49

Was ist .NET?

grammierung beschftigt haben. Einige Zusammenhnge, wie etwa die Rolleder Assemblies oder die Ausfhrung von IL-Code, wirken dann etwas konkre-ter und weniger abstrakt.

2.1 Was ist .NET?

Mit manchen Begriffen ist das so eine Sache. Man hrt sie praktisch stndigund berall, doch so richtig verstehen kann man sie zunchst nicht. Das hateine einfache Erklrung. Der Begriff stammt von der Firma Microsoft, die vorallem fr ein sehr erfolgreiches Marketing bekannt ist. Gibt es aus dem HauseMicrosoft etwas Neues, dauert es nicht lange und jeder kennt den neuen Mo-detrend beim Namen. Nicht immer muss es zu jedem Begriff eine technischfundierte Definition geben, denn die Kunst des Marketings besteht bekannt-lich darin, etwas zu verkaufen, und dazu gehrt auch ein trendiger Name..NET ist jedoch kein Marketingprodukt, auch wenn der Name und der Um-stand, dass es kaum ein Microsoft-Produkt mehr gibt, wo es nicht als Namens-anhang auftaucht, zu der Annahme verleiten knnten. Dazu ist .NET viel zuwichtig und dazu steckt viel zu viel an konkreter Software dahinter (VisualBasic .NET ist nur ein kleines Beispiel). Hinter .NET steckt eine komplettneue Systemarchitektur, an der mehrere Hundert Softwareingenieure in denletzten Jahren mit Hochdruck gearbeitet haben. Im Unterschied zu manchenanderen Technologien ist .NET vollstndig und verfgbar, es gibt nichts, waserst irgendwann in Zukunft noch fertig gestellt werden msste. Der griffigeName wurde deswegen gewhlt, weil er sich leicht merken lsst, sich gut an-hrt und daher auch fr die Werbung gut geeignet ist1. Mit Netzwerken oderder Domainerweiterung .net hat unser .NET nichts zu tun (wenngleich es inerster Linie fr die Programmierung von Webanwendungen geschaffen wurdeund daher eine direkte Beziehung zum Internet besteht). Der ursprnglicheName lautete brigens Next Generation Windows Services. Suchen Sie sichaus, was Ihnen besser gefllt (wahrscheinlich klingt .NET auf einmal sehr vielattraktiver).

Alles schn und gut, doch was steckt nun genau dahinter? .NET ist der Nameder neuen Systemplattform von Microsoft, auf der in Zukunft immer mehrAnwendungen aufbauen werden. Technisch gesehen ist .NET ein umfangrei-cher Satz von Programmen (die in der Kommandozeile ausgefhrt werden)und Systemdateien, die auf jedem Windows-Computer nachtrglich installiertwerden mssen (lediglich Windows 95 wird nicht mehr untersttzt)2 und die

1. Und auerdem hat vor Jahren der Lieblingsrivale von Microsoft, die Firma Sun, die vonMicrosoft gerne als the other company bezeichnet wird, auf einem ihrer Werbeplakatebehauptet, sie seien der Punkt in .com.

2. Was auch vernnftig ist, denn irgendwann muss einmal Schluss sein mit der Abwrtskompati-bilitt.

50

Die .NET-Philosophie2bei knftigen Windows-Versionen (etwa Windows .NET Server) von Anfangan mit dabei sein werden. Wurden diese Dateien installiert, sieht Windows kei-nen Deut anders aus als vorher, denn .NET ist kein Programm und schon garnicht eine Oberflche, sondern wirkt hauptschlich unsichtbar im Hinter-grund (lediglich das Startmen enthlt unter Umstnden einen neuen Eintrag,ber den die Tools des .NET-Framework SDK aufgerufen werden knnen).Dennoch hat sich etwas Entscheidendes gendert. Windows ist auf einmal inder Lage, .NET-Anwendungen auszufhren, und ist damit endlich im 21.Jahrhundert angekommen. Im Mittelpunkt von .NET steht (aus der Sicht derProgrammierer) die Common Language Runtime (CLR), sozusagen derKern von .NET, der fr die Ausfhrung aller .NET-Anwendungen (dazu geh-ren natrlich auch jene, die mit Visual Basic .NET programmiert wurden) zu-stndig ist. Eine Laufzeitumgebung, die die Ausfhrung eines Programmskontrolliert, ist grundstzlich nichts Besonderes, denn fr Visual Basic-Pro-grammierer gibt es sie bereits seit Version 1.0. Die CLR ersetzt die bisherigeLaufzeitumgebung und hat mindestens zwei Vorteile:

Sie stellt eine Vielzahl sehr leistungsfhiger Funktionen, wie Multithrea-ding, Erweiterung von Klassen (Vererbung), strukturierte Ausnahmebe-handlung fr das Abfangen von Laufzeitfehlern, Sicherheit bei der Ausfh-rung von Programmen und vieles mehr zur Verfgung.

Die CLR ist fr smtliche .NET-Programmiersprachen zustndig.

Visual Basic .NET-Programmierer nehmen die CLR nur indirekt wahr, da siebei der Programmierung nur in Ausnahmefllen direkt angesprochen wird,sondern die meiste Zeit unsichtbar im Hintergrund wirkt. Sie ist aber das neueFundament, auf dem Visual Basic .NET-Programme aufsetzen und das daherauf jedem Computer vorhanden sein muss, auf dem ein Visual Basic .NET-Programm laufen soll.

Die vorlufige Antwort auf die eingangs gestellte Frage lautet daher: .NET be-steht aus einer neuen Laufzeitumgebung, die sich alle Programme teilen undmit der eine Vielzahl neuer Mglichkeiten fr die Programmierer einherge-hen. Was sich hinter der CLR verbirgt, erfahren Sie im nchsten Abschnitt.

2.1.1 Die Rolle der Common Language Runtime (CLR)

Der wichtigste Bestandteil von .NET ist die Common Language Runtime,kurz CLR. Sie ist das Kontrollprogramm, das fr die Ausfhrung jedes .NET-Programms, egal, in welcher (.NET-)Sprache es programmiert wird, zustndigist. Sobald Sie eine Exe-Datei starten, die von einem .NET-Compiler (etwa Vi-sual Basic .NET) kompiliert wurde, tritt die CLR in Aktion und bernimmt dieKontrolle ber die Ausfhrung. Diese Programme werden daher auch