Sie sind hier
E-Book

Kompaktkurs C# 7

AutorHanspeter Mössenböck
Verlagdpunkt
Erscheinungsjahr2018
Seitenanzahl344 Seiten
ISBN9783960886815
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis23,99 EUR
Das Buch beschreibt in kompakter Form den gesamten Sprachumfang von C# mit den neuen Sprachmerkmalen von C# 7. Es richtet sich an Leser, die bereits Erfahrung mit einer anderen Programmiersprache wie Java oder C++ haben und sich rasch in C# einarbeiten wollen, um damit produktiv zu werden. Neben der Sprache C# behandelt das Buch auch diverse Anwendungen und Fallstudien im .NETFramework. Themen: - Datenstrukturen und Anweisungen - Klassen, Structs, Interfaces und Vererbung - Properties, Indexer und Iteratoren - Delegates und Events - Exception Handling - Threads und Synchronisation - Generische Bausteine - Attribute und Reflection - Assemblies als Softwarekomponenten - Lambda-Ausdrücke - Erweiterungsmethoden - Anonyme Typen - Query-Ausdrücke in LINQ - Asynchrone Methoden und Parallelität - Tupel - Pattern Matching - Auszug aus der .NET-Klassenbibliothek - Fallstudien mit ASP.NET und Web-ServicesZahlreiche Beispiele sowie weit über 100 Übungsaufgaben mit Musterlösungen machen das Buch sowohl für den Einsatz im Unterricht als auch für das Selbststudium geeignet.

Hanspeter Mössenböck ist Professor für Informatik an der Universität Linz und Leiter des Instituts für Systemsoftware. Er beschäf-tigt sich vor allem mit Programmiersprachen, Compilern und Systemsoftware. Als ehemaliger Mitarbeiter von Prof. Niklaus Wirth an der ETH Zürich war er Mitglied des Oberon-Teams, in dem ein Pascal-Nachfolger samt innovativem Betriebssystem entwickelt wurde. Ferner ist er Autor des Compiler-Generators Coco/R, der heute weltweit als Public-Domain-Software eingesetzt wird. Neben einem Forschungsaufenthalt bei Sun Microsystems in Kalifornien hatte er Gastprofessuren in Oxford und Budapest inne. Er ist Verfasser der Bücher 'Sprechen Sie Java?' und 'Objektorientierte Programmierung in Oberon-2' sowie Mitverfasser der Bücher 'Die .NET-Technologie' und 'Ein Compiler-Generator für Mikrocomputer'.

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Geleitwort5
Vorwort7
Inhalt7
Zielpublikum8
Inhalt9
1 C# und das .NET-Framework15
1.1 Ähnlichkeiten zwischen C# und Java15
1.2 Unterschiede zwischen C# und Java17
1.3 Das .NET-Framework18
Abb. 1–1 Grobarchitektur des .NET-Frameworks19
Common Language Runtime19
Abb. 1–2 Quellcode, CIL-Code und Maschinencode20
Assemblies20
Abb. 1–3 Vom Compiler erzeugtes Assembly Prog.exe21
ADO.NET22
ASP.NET22
Web-Services23
1.4 Übungsaufgaben24
2 Erste Schritte25
2.1 Hello World25
2.2 Gliederung von Programmen26
Abb. 2–1 Gliederung von Programmen26
Programme aus mehreren Dateien26
2.3 Symbole27
2.4 Übungsaufgaben30
3 Typen31
Abb. 3–1 Typenhierarchie31
Tabelle 3–1 Werttypen und Referenztypen32
3.1 Einfache Typen32
Tabelle 3–2 Einfache Typen32
Abb. 3–2 Kompatibilitätsbeziehung zwischen einfachen Typen33
3.2 Enumerationen33
3.3 Arrays34
Abb. 3–3 Ausgefranste und rechteckige mehrdimensionale Arrays35
3.4 Strings37
Tabelle 3–3 Stringoperationen (Auszug)38
3.5 Structs38
3.6 Klassen39
Tabelle 3–4 Klassen versus Structs40
3.7 object40
3.8 Boxing und Unboxing41
Abb. 3–4 Boxing eines int-Werts41
3.9 Übungsaufgaben42
4 Ausdrücke45
Tabelle 4–1 Operatoren nach Priorität geordnet45
4.1 Arithmetische Ausdrücke45
4.2 Vergleichsausdrücke46
4.3 Boolesche Ausdrücke47
4.4 Bit-Ausdrücke47
4.5 Shift-Ausdrücke47
4.6 Überlaufprüfung48
4.7 typeof48
4.8 sizeof49
4.9 Übungsaufgaben49
5 Deklarationen51
5.1 Deklarationen in Namensräumen52
5.2 Deklarationen in Klassen, Structs und Interfaces53
5.3 Deklarationen in Enumerationstypen54
5.4 Deklarationen in Blöcken54
5.5 Übungsaufgaben56
6 Anweisungen57
6.1 Leeranweisung57
6.2 Zuweisung57
6.3 Methodenaufruf58
6.4 if-Anweisung58
6.5 switch-Anweisung59
6.6 while-Anweisung60
6.7 do-while-Anweisung60
6.8 for-Anweisung60
6.9 foreach-Anweisung61
6.10 break- und continue-Anweisungen62
6.11 goto-Anweisung62
Abb. 6–1 Endlicher Automat63
6.12 return-Anweisung63
6.13 Übungsaufgaben64
7 Ein-/Ausgabe65
7.1 Ausgabe auf den Bildschirm65
7.2 Formatierte Ausgabe65
Platzhalter-Syntax66
Tabelle 7–1 Die wichtigsten Formatierungscodes67
Stringformatierung67
Vereinfachte Platzhalter in Formatstrings68
7.3 Ausgabe auf eine Datei68
7.4 Eingabe von der Tastatur69
7.5 Eingabe von einer Datei69
7.6 Lesen der Kommandozeilenparameter70
7.7 Übungsaufgaben71
8 Klassen und Structs73
8.1 Sichtbarkeitsattribute74
8.2 Felder76
Statische Felder76
Abb. 8–1 Statische und nicht statische Felder77
8.3 Methoden77
Statische Methoden78
Parameter78
Variable Anzahl von Parametern80
Überladen von Methoden81
Optionale Parameter82
Benannte Parameter83
8.4 Konstruktoren84
Konstruktoren in Klassen84
Konstruktoren in Structs85
Statische Konstruktoren86
8.5 Destruktoren86
8.6 Properties87
8.7 Indexer90
8.8 Überladene Operatoren92
Tabelle 8–1 Überladbare Operatoren93
Konversionsoperatoren94
8.9 Kurzform für Methoden95
8.10 Geschachtelte Typen96
8.11 Partielle Typen97
8.12 Partielle Methoden98
8.13 Statische Klassen99
8.14 Unterschiede zu Java99
8.15 Übungsaufgaben100
9 Vererbung103
9.1 Deklaration von Unterklassen103
9.2 Kompatibilität zwischen Klassen105
Tabelle 9–1 Statischer und dynamischer Typ einer Variablen105
9.3 Überschreiben und Verdecken von Elementen106
9.4 Dynamische Bindung109
Dynamische Bindung und Verdecken von Methoden110
Das Problem der zerbrechlichen Basisklassen110
9.5 Konstruktoren in Ober- und Unterklasse112
Tabelle 9–2 Impliziter Aufruf des parameterlosen Konstruktors der Basisklasse112
9.6 Abstrakte Klassen113
Abstrakte Properties und Indexer113
9.7 Versiegelte Klassen114
9.8 Die Klasse Object115
9.9 Übungsaufgaben117
10 Interfaces119
10.1 Deklaration und Verwendung von Interfaces119
Abb. 10–1 Arbeiten mit einem Objekt versus Arbeiten mit einer Interfacevariablen120
10.2 Operationen auf Interfaces121
10.3 Erweiterung von Interfaces122
Abb. 10–2 Abhängigkeiten zwischen ISimpleReader, IReader, Terminal und File122
10.4 Namenskonflikte123
10.5 Interface IDisposable124
using-Anweisung125
10.6 Übungsaufgaben125
11 Delegates und Events127
11.1 Einfache Delegates127
11.2 Multicast-Delegates128
11.3 Erzeugen von Delegate-Werten128
Vereinfachte Delegate-Zuweisung129
11.4 Ereignisse (Events)130
11.5 Anonyme Methoden131
11.6 Übungsaufgaben133
12 Ausnahmen135
12.1 try-Anweisung135
12.2 Ausnahmeklassen137
Abb. 12–1 Auszug aus der Hierarchie der Ausnahmeklassen138
12.3 Auslösen von Ausnahmen138
Abb. 12–2 Suche nach einer passenden catch-Klausel139
12.4 Ausnahmen in aufgerufenen Methoden140
12.5 Ausnahmen in Multicast-Delegates140
Abb. 12–3 Suche nach einer catch-Klausel in Zusammenhang mit Delegates140
12.6 Übungsaufgaben141
13 Namensräume und Assemblies143
13.1 Namensräume143
C#-Namensräume versus Java-Pakete144
Abb. 13–1 Pakete werden in Java auf Verzeichnisse abgebildet, Namensräume in C# nicht145
13.2 Assemblies146
13.2.1 Assemblies und Module146
Abb. 13–2 Assembly A.exe, bestehend aus drei Modulen147
13.2.2 Versionierung von Assemblies147
Private und öffentliche Assemblies147
Starke Namen148
Versionsnummer148
Abb. 13–3 A.exe merkt sich die Versionsnummer von Lib.dll149
Signierte Assemblies149
Abb. 13–4 Signieren eines Assemblies150
Abb. 13–5 Überprüfung der Unterschrift eines Assemblies150
13.2.3 Assemblies versus Namensräume150
Abb. 13–6 Ein Assembly, bestehend aus den Klassen A.C2 und B.C3 sowie aus einem Icon151
13.3 Übungsaufgaben151
14 Generische Bausteine153
14.1 Generische Typen154
14.2 Constraints155
Konstruktor-Constraints156
14.3 Vererbung bei generischen Typen156
Zuweisungskompatibilität zwischen generischen Typen157
Überschreiben von Methoden158
Laufzeittypprüfungen158
14.4 Generische Methoden158
14.5 Generische Delegates159
14.6 Nullwerte161
14.7 Ko- und Kontravarianz bei generischen Typen161
Typsichere Kovarianz162
Abb. 14–1 Kovarianz bei generischen Typen163
Typsichere Kontravarianz163
Abb. 14–2 Kontravarianz bei generischen Typen164
Beispiel164
Abb. 14–3 Beispiel-Klassenhierarchie164
14.8 Was geschieht hinter den Kulissen?165
14.9 Unterschiede zu Java165
14.10 Übungsaufgaben166
15 Threads169
15.1 Die Klasse Thread169
Beispiel171
15.2 Zustände eines Threads172
Abb. 15–1 Zustandsübergangsdiagramm eines Threads172
15.3 Abbrechen eines Threads173
15.4 Thread-Synchronisation174
Abb. 15–2 Zwei Threads führen gleichzeitig die Anweisung x = x + 1 aus174
Die lock-Anweisung174
Die Klasse Monitor176
Wait und Pulse176
Abb. 15–3 Systemverklemmung bei Verwendung von Pulse statt PulseAll178
15.5 Übungsaufgaben179
16 Iteratoren181
16.1 Allgemeine Iteratoren181
yield-Anweisung183
16.2 Spezifische Iteratoren183
Übersetzung spezifischer Iteratoren185
16.3 Übungsaufgaben186
17 Attribute187
17.1 Schreibweise von Attributen187
17.2 Parameter von Attributen188
17.3 Attribute für spezifische Programmelemente189
17.4 Attribut Serializable190
Abb. 17–1 Ursprüngliche Liste und neue Liste nach Serialisierung und Deserialisierung191
17.5 Attribut Conditional192
17.6 Attribut DllImport193
Abb. 17–2 Ein von einer Native-Funktion erzeugtes Fenster193
17.7 Deklaration eigener Attribute194
17.8 Übungsaufgaben195
18 Dokumentationskommentare197
18.1 XML-Elemente197
Beispiel198
18.2 Erzeugte XML-Datei199
18.3 Übungsaufgaben200
19 Auszug aus der .NET-Klassenbibliothek201
Tabelle 19–1 Auszug der Namensräume und Typen der .NET-Bibliothek202
19.1 Hilfsklassen202
StringBuilder202
Math203
Random204
Convert204
19.2 Collections205
Abb. 19–1 Auszug der wichtigsten Collection-Typen205
Array206
ArrayList206
Hashtable208
ListDictionary209
SortedList209
Stack210
Queue210
BitArray211
Iterieren über Collections212
Generische Collection-Typen213
19.3 Ein-/Ausgabe214
Datenströme214
Abb. 19–2 Hierarchie der Stream-Klassen215
Reader216
Abb. 19–3 Reader-Klassen (Auszug)216
Writer217
Abb. 19–4 Writer-Klassen (Auszug)217
File und FileInfo218
Abb. 19–5 Auszug aus den Klassen File und FileInfo218
Directory und DirectoryInfo218
Abb. 19–6 Auszug aus den Klassen Directory und DirectoryInfo219
19.4 Reflection220
Type220
Assembly222
19.5 Übungsaufgaben224
20 LINQ227
20.1 Motivation227
20.2 Lambda-Ausdrücke228
Lambda-Ausdrücke als Parameter229
Lambda-Ausdrücke als Prädikate230
Lambda-Ausdrücke mit mehreren Parametern230
Lambda-Ausdrücke mit Anweisungsblöcken231
Beispiele232
20.3 Erweiterungsmethoden232
20.4 Objektinitialisierer234
Initialisierer für Collections235
20.5 Anonyme Typen236
Schlüsselwort var237
20.6 Query-Ausdrücke238
Query-Syntax239
Laufvariablen240
Gruppierung241
Joins242
Gruppen-Joins244
let244
20.7 LINQ und XML245
XElement und XAttribute245
Erzeugen von XML-Daten aus einer Wertefolge246
Erzeugen einer Wertefolge aus XML-Daten246
20.8 Übungsaufgaben247
21 Asynchrone Methoden und Parallelität249
21.1 Asynchronität249
Abb. 21–1 Synchrone und asynchrone Methodenaufrufe249
21.2 Tasks250
21.3 Asynchrone Methoden252
Abb. 21–2 Ablauf von DoAsync() Task ist bereits vor der await-Anweisung fertig252
Abb. 21–3 Ablauf von DoAsync() Task ist erst nach der await-Anweisung fertig253
Umwandlung von synchronen in asynchrone Methoden254
Einschränkungen und Hinweise255
Asynchronität in Schleifen256
Abb. 21–4 Asynchrone Operation in einer Schleife256
Weiteres Beispiel257
Abb. 21–5 Verzahnter Steuerfluss beim Aufruf von DoAsync(), GetAsync() und ReadAsync()258
21.4 Explizite Parallelität258
21.5 Übungsaufgaben260
22 Tupel261
22.1 Tupel-Typen261
22.2 Zuweisungen262
22.3 Anwendungen263
Funktionen mit mehreren Rückgabewerten263
Tupel-Typen als Typparameter264
Tupel-Typen als Projektionen264
22.4 Zerlegung von Tupeln265
Zerlegung unter Weglassung einzelner Elemente266
22.5 Dekonstruktoren für Klassen und Structs266
22.6 Übungsaufgaben267
23 Pattern Matching269
Pattern Matching in switch-Anweisungen270
24 Interoperabilität mit COM273
24.1 COM-Objekte von .NET aus ansprechen274
Erzeugen eines Assemblies (tlbimp)274
Abb. 24–1 Ansicht von MyLibNET.dll in ildasm275
Registrieren der COM-Objekte (regsvr32)275
Benutzung des Assemblies276
Spät gebundener Methodenaufruf276
24.2 .NET-Assemblies von COM aus ansprechen277
Früh gebundener Methodenaufruf277
Spät gebundener Methodenaufruf279
24.3 Übungsaufgaben279
Abb. 24–2 Beispiele für Figuren unter Microsoft Agent279
25 Dynamisch getypte Variablen281
25.1 Typ dynamic281
Abb. 25–1 Alle Typen sind mit dynamic kompatibel281
25.2 Operationen auf dynamic-Variablen283
Implementierung der dynamischen Methodensuche284
26 Diverses285
26.1 Null-fähige Werttypen285
Rechnen mit null-fähigen Typen287
Konversion zwischen null-fähigen Typen und Originaltypen287
26.2 Bedingter Zugriff über Referenzen288
Bedingter Aufruf von Delegates289
26.3 using static289
26.4 Geschachtelte Methoden290
26.5 Rückgabe von Funktionswerten by reference291
27 Fallstudien293
27.1 Anwendungen mit grafischer Benutzeroberfläche293
Tabelle 27–1 Einige der in Windows Forms benötigten Typen293
Spezifikation eines Dateivergleichsprogramms294
Abb. 27–1 Benutzeroberfläche des Dateivergleichswerkzeugs294
Erstellen der Benutzeroberfläche mit Visual Studio .NET295
Abb. 27–2 Anlegen eines neuen Projekts295
Abb. 27–3 Entwurfsfläche mit Toolbox-Palette und Property-Fenster296
Tabelle 27–2 Properties der GUI-Elemente des Dateivergleichsprogramms297
Erzeugter Code298
27.2 Ein Web-Service für Börsenkurse302
Abb. 27–4 Eine Applikation holt sich Informationen von verschiedenen Web-Services303
Spezifikation eines Web-Services für Börsenkurse303
Serverseitige Implementierung303
Abb. 27–5 Von .NET generierte Seite zum Testen des Web-Services305
Clientseitige Implementierung306
Abb. 27–6 Aufruf der Web-Service-Methode GetQuote307
27.3 Dynamische Webseiten mit ASP.NET307
Abb. 27–7 Benutzeroberfläche einer Webseite zur Abfrage von Börsenkursen308
Layout der Webseite308
Hintergrundcode310
Einbinden weiterer Klassen311
Benutzung der Webseite312
Interaktive Erstellung von Webseiten312
Weitere Möglichkeiten von ASP.NET312
27.4 Übungsaufgaben313
A Anhang315
A.1 Compileroptionen315
Optionen zur Bestimmung der erzeugten Ausgabe315
Optionen zum Einbinden von Bibliotheken316
Weitere Optionen (Auswahl)316
Beispiele317
Tabelle A–1 Beispiele für den Aufruf des C#-Compilers317
A.2 Werkzeuge unter .NET318
A.2.1 ildasm318
Abb. A–1 Ansicht eines Assemblies Primes.exe in ildasm318
Abb. A–2 Links: Manifest von Primes.exe rechts: CIL-Code der Methode PrintPrimes318
A.2.2 Globaler Assembly-Cache319
Signieren von Assemblies319
Verzögertes Signieren von Assemblies320
Verwaltung des globalen Assembly-Cache321
Abb. A–3 Globaler Assembly-Cache321
A.3 Grammatik von C#322
Tabelle A–2 Metazeichen in Grammatikregeln322
Zeichenmengen322
Namen und Konstanten323
Deklarationen323
Typen325
Anweisungen326
Ausdrücke327
A.4 Unicode und ASCII329
Tabelle A–3 Der ASCII-Zeichensatz (entspricht den ersten 128 Zeichen von Unicode)329
Literatur331
Index333

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

caritas

caritas

mitteilungen für die Erzdiözese FreiburgUm Kindern aus armen Familien gute Perspektiven für eine eigenständige Lebensführung zu ermöglichen, muss die Kinderarmut in Deutschland nachhaltig ...

DER PRAKTIKER

DER PRAKTIKER

Technische Fachzeitschrift aus der Praxis für die Praxis in allen Bereichen des Handwerks und der Industrie. “der praktiker“ ist die Fachzeitschrift für alle Bereiche der fügetechnischen ...

Der Steuerzahler

Der Steuerzahler

Der Steuerzahler ist das monatliche Wirtschafts- und Mitgliedermagazin des Bundes der Steuerzahler und erreicht mit fast 230.000 Abonnenten einen weitesten Leserkreis von 1 ...

rfe-Elektrohändler

rfe-Elektrohändler

rfe-Elektrohändler ist die Fachzeitschrift für die CE- und Hausgeräte-Branche. Wichtige Themen sind: Aktuelle Entwicklungen in beiden Branchen, Waren- und Verkaufskunde, Reportagen über ...

elektrobörse handel

elektrobörse handel

elektrobörse handel gibt einen facettenreichen Überblick über den Elektrogerätemarkt: Produktneuheiten und -trends, Branchennachrichten, Interviews, Messeberichte uvm.. In den monatlichen ...

FileMaker Magazin

FileMaker Magazin

Das unabhängige Magazin für Anwender und Entwickler, die mit dem Datenbankprogramm Claris FileMaker Pro arbeiten. In jeder Ausgabe finden Sie von kompletten Lösungsschritten bis zu ...