Sie sind hier
E-Book

Visual C# 2017 - Grundlagen, Profiwissen und Rezepte

AutorThomas Gewinnus, Walter Doberenz, Walter Saumweber
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2018
Seitenanzahl951 Seiten
ISBN9783446453708
FormatPDF/ePUB
KopierschutzWasserzeichen
GerätePC/MAC/eReader/Tablet
Preis49,99 EUR
Dieser Klassiker der C#-/.NET-Programmierung bietet Ihnen Know-how und zahlreiche Rezepte, mit denen Sie häufig auftretende Probleme meistern. Einsteiger erhalten ein umfangreiches Tutorial zu den Grundlagen der C#-Programmierung mit Visual Studio 2017, dem Profi liefert es fortgeschrittene Programmiertechniken zu allen wesentlichen Einsatzgebieten der Windows-Programmierung. Zum sofortigen Ausprobieren finden Sie am Ende eines jeden Kapitels hochwertige Lösungen für nahezu jedes Problem.
Mit diesem Buch haben Sie den idealen Begleiter für Ihre tägliche Arbeit und zugleich - dank der erfrischenden und unterhaltsamen Sprache - eine spannende Lektüre, die Lust macht, auch Projekte in der Freizeit umzusetzen.
Das Buch gliedert sich in einen Grundlagenteil zur Programmierung mit Visual Studio 2017 und C# 7.0 und einen Technologieteil zu fortgeschrittenen Themen.
Im Internet finden Sie darüber hinaus zum Download Beispiele und Bonuskapitel zu Windows Presentation Foundation (WPF) und Windows Forms-Anwendungen.

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Inhalt7
Vorwort23
TEIL I: Grundlagen27
1 Einstieg in Visual Studio 201729
1.1 Die Installation von Visual Studio 201729
1.1.1 Überblick über die Produktpalette29
1.1.2 Anforderungen an Hard- und Software30
1.2 Unser allererstes C#-Programm31
1.2.1 Vorbereitungen31
1.2.2 Quellcode schreiben33
1.2.3 Programm kompilieren und testen33
1.2.4 Einige Erläuterungen zum Quellcode34
1.2.5 Konsolenanwendungen sind out35
1.3 Die Windows-Philosophie36
1.3.1 Mensch-Rechner-Dialog36
1.3.2 Objekt- und ereignisorientierte Programmierung36
1.3.3 Programmieren mit Visual Studio 201738
1.4 Die Entwicklungsumgebung Visual Studio 201739
1.4.1 Neues Projekt39
1.4.2 Die wichtigsten Fenster40
1.5 Microsofts .NET-Technologie44
1.5.1 Zur Geschichte von .NET44
1.5.2 .NET-Features und Begriffe46
1.6 Praxisbeispiele54
1.6.1 Unsere erste Windows-Forms-Anwendung54
1.6.2 Umrechnung Euro-Dollar58
2 Grundlagen der Sprache C#67
2.1 Grundbegriffe67
2.1.1 Anweisungen67
2.1.2 Bezeichner68
2.1.3 Schlüsselwörter69
2.1.4 Kommentare70
2.2 Datentypen, Variablen und Konstanten71
2.2.1 Fundamentale Typen71
2.2.2 Wertetypen versus Verweistypen72
2.2.3 Benennung von Variablen73
2.2.4 Deklaration von Variablen73
2.2.5 Typsuffixe75
2.2.6 Zeichen und Zeichenketten75
2.2.7 object-Datentyp78
2.2.8 Konstanten deklarieren79
2.2.9 Nullable Types79
2.2.10 Typinferenz80
2.2.11 Gültigkeitsbereiche und Sichtbarkeit81
2.3 Konvertieren von Datentypen82
2.3.1 Implizite und explizite Konvertierung82
2.3.2 Welcher Datentyp passt zu welchem?84
2.3.3 Konvertieren von string84
2.3.4 Die Convert-Klasse87
2.3.5 Die Parse-Methode87
2.3.6 Boxing und Unboxing88
2.4 Operatoren89
2.4.1 Arithmetische Operatoren90
2.4.2 Zuweisungsoperatoren92
2.4.3 Logische Operatoren93
2.4.4 Rangfolge der Operatoren95
2.5 Kontrollstrukturen97
2.5.1 Verzweigungsbefehle97
2.5.2 Schleifenanweisungen100
2.6 Benutzerdefinierte Datentypen103
2.6.1 Enumerationen103
2.6.2 Strukturen105
2.7 Nutzerdefinierte Methoden107
2.7.1 Methoden mit Rückgabewert108
2.7.2 Methoden ohne Rückgabewert109
2.7.3 Parameterübergabe mit ref110
2.7.4 Parameterübergabe mit out111
2.7.5 Methodenüberladung112
2.7.6 Optionale Parameter113
2.7.7 Benannte Parameter115
2.8 Praxisbeispiele116
2.8.1 Vom PAP zur Konsolenanwendung116
2.8.2 Ein Konsolen- in ein Windows-Programm verwandeln118
2.8.3 Schleifenanweisungen verstehen120
2.8.4 Benutzerdefinierte Methoden überladen122
2.8.5 Anwendungen von Visual Basic nach C# portieren125
3 OOP-Konzepte133
3.1 Kleine Einführung in die OOP133
3.1.1 Historische Entwicklung134
3.1.2 Grundbegriffe der OOP135
3.1.3 Sichtbarkeit von Klassen und ihren Mitgliedern137
3.1.4 Allgemeiner Aufbau einer Klasse138
3.1.5 Das Erzeugen eines Objekts140
3.1.6 Einführungsbeispiel143
3.2 Eigenschaften147
3.2.1 Eigenschaften mit Zugriffsmethoden kapseln147
3.2.2 Berechnete Eigenschaften149
3.2.3 Lese-/Schreibschutz151
3.2.4 Property-Accessoren152
3.2.5 Statische Felder/Eigenschaften152
3.2.6 Einfache Eigenschaften automatisch implementieren155
3.3 Methoden156
3.3.1 Öffentliche und private Methoden156
3.3.2 Überladene Methoden157
3.3.3 Statische Methoden158
3.4 Ereignisse160
3.4.1 Ereignis hinzufügen160
3.4.2 Ereignis verwenden163
3.5 Arbeiten mit Konstruktor und Destruktor166
3.5.1 Konstruktor und Objektinitialisierer167
3.5.2 Destruktor und Garbage Collector170
3.5.3 Mit using den Lebenszyklus des Objekts kapseln172
3.5.4 Verzögerte Initialisierung173
3.6 Vererbung und Polymorphie174
3.6.1 Klassendiagramm174
3.6.2 Method-Overriding175
3.6.3 Klassen implementieren175
3.6.4 Implementieren der Objekte179
3.6.5 Ausblenden von Mitgliedern durch Vererbung180
3.6.6 Allgemeine Hinweise und Regeln zur Vererbung182
3.6.7 Polymorphes Verhalten183
3.6.8 Die Rolle von System.Object186
3.7 Spezielle Klassen187
3.7.1 Abstrakte Klassen187
3.7.2 Versiegelte Klassen189
3.7.3 Partielle Klassen189
3.7.4 Statische Klassen191
3.8 Schnittstellen (Interfaces)191
3.8.1 Definition einer Schnittstelle192
3.8.2 Implementieren einer Schnittstelle192
3.8.3 Abfragen, ob Schnittstelle vorhanden ist193
3.8.4 Mehrere Schnittstellen implementieren194
3.8.5 Schnittstellenprogrammierung ist ein weites Feld ...194
3.9 Praxisbeispiele195
3.9.1 Eigenschaften sinnvoll kapseln195
3.9.2 Eine statische Klasse anwenden198
3.9.3 Vom fetten zum schlanken Client200
3.9.4 Schnittstellenvererbung verstehen210
3.9.5 Rechner für komplexe Zahlen215
3.9.6 Sortieren mit IComparable/IComparer224
3.9.7 Einen Objektbaum in generischen Listen abspeichern228
3.9.8 OOP beim Kartenspiel erlernen234
3.9.9 Eine Klasse zur Matrizenrechnung entwickeln239
4 Arrays, Strings, Funktionen245
4.1 Datenfelder (Arrays)245
4.1.1 Array deklarieren246
4.1.2 Array instanziieren246
4.1.3 Array initialisieren247
4.1.4 Zugriff auf Array-Elemente248
4.1.5 Zugriff mittels Schleife249
4.1.6 Mehrdimensionale Arrays250
4.1.7 Zuweisen von Arrays252
4.1.8 Arrays aus Strukturvariablen253
4.1.9 Löschen und Umdimensionieren von Arrays254
4.1.10 Eigenschaften und Methoden von Arrays255
4.1.11 Übergabe von Arrays257
4.2 Verarbeiten von Zeichenketten258
4.2.1 Zuweisen von Strings258
4.2.2 Eigenschaften und Methoden von String-Variablen259
4.2.3 Wichtige Methoden der String-Klasse262
4.2.4 Die StringBuilder-Klasse264
4.3 Reguläre Ausdrücke267
4.3.1 Wozu werden reguläre Ausdrücke verwendet?267
4.3.2 Eine kleine Einführung267
4.3.3 Wichtige Methoden/Eigenschaften der Klasse Regex268
4.3.4 Kompilierte reguläre Ausdrücke270
4.3.5 RegexOptions-Enumeration271
4.3.6 Metazeichen (Escape-Zeichen)272
4.3.7 Zeichenmengen (Character Sets)273
4.3.8 Quantifizierer275
4.3.9 Zero-Width Assertions276
4.3.10 Gruppen280
4.3.11 Text ersetzen280
4.3.12 Text splitten281
4.4 Datums- und Zeitberechnungen282
4.4.1 Die DateTime-Struktur282
4.4.2 Wichtige Eigenschaften von DateTime-Variablen284
4.4.3 Wichtige Methoden von DateTime-Variablen284
4.4.4 Wichtige Mitglieder der DateTime-Struktur285
4.4.5 Konvertieren von Datumstrings in DateTime-Werte286
4.4.6 Die TimeSpan-Struktur287
4.5 Mathematische Funktionen289
4.5.1 Überblick289
4.5.2 Zahlen runden289
4.5.3 Winkel umrechnen290
4.5.4 Potenz- und Wurzeloperationen290
4.5.5 Logarithmus und Exponentialfunktionen290
4.5.6 Zufallszahlen erzeugen291
4.6 Zahlen- und Datumsformatierungen292
4.6.1 Anwenden der ToString-Methode292
4.6.2 Anwenden der Format-Methode294
4.6.3 Stringinterpolation295
4.7 Praxisbeispiele296
4.7.1 Zeichenketten verarbeiten296
4.7.2 Zeichenketten mit StringBuilder addieren299
4.7.3 Reguläre Ausdrücke testen303
4.7.4 Methodenaufrufe mit Array-Parametern304
5 Weitere Sprachfeatures309
5.1 Namespaces (Namensräume)309
5.1.1 Ein kleiner Überblick309
5.1.2 Einen eigenen Namespace einrichten310
5.1.3 Die using-Anweisung311
5.1.4 Namespace Alias312
5.2 Operatorenüberladung313
5.2.1 Syntaxregeln313
5.2.2 Praktische Anwendung313
5.3 Collections (Auflistungen)314
5.3.1 Die Schnittstelle IEnumerable315
5.3.2 ArrayList317
5.3.3 Hashtable319
5.3.4 Indexer319
5.4 Generics322
5.4.1 Klassische Vorgehensweise322
5.4.2 Generics bieten Typsicherheit324
5.4.3 Generische Methoden325
5.4.4 Iteratoren326
5.5 Generische Collections327
5.5.1 List-Collection statt ArrayList327
5.5.2 Vorteile generischer Collections328
5.5.3 Constraints328
5.6 Das Prinzip der Delegates329
5.6.1 Delegates sind Methodenzeiger329
5.6.2 Einen Delegate-Typ deklarieren329
5.6.3 Ein Delegate-Objekt erzeugen330
5.6.4 Delegates vereinfacht instanziieren332
5.6.5 Anonyme Methoden332
5.6.6 Lambda-Ausdrücke334
5.6.7 Lambda-Ausdrücke in der Task Parallel Library336
5.7 Dynamische Programmierung338
5.7.1 Wozu dynamische Programmierung?338
5.7.2 Das Prinzip der dynamischen Programmierung338
5.7.3 Optionale Parameter sind hilfreich341
5.7.4 Kovarianz und Kontravarianz342
5.8 Weitere Datentypen343
5.8.1 BigInteger343
5.8.2 Complex345
5.8.3 Tuple<>346
5.8.4 SortedSet<>347
5.9 Praxisbeispiele348
5.9.1 ArrayList versus generische List348
5.9.2 Generische IEnumerable-Interfaces implementieren351
5.9.3 Delegates, anonyme Methoden, Lambda Expressions355
5.9.4 Dynamischer Zugriff auf COM Interop359
6 Einführung in LINQ363
6.1 LINQ-Grundlagen363
6.1.1 Die LINQ-Architektur363
6.1.2 Anonyme Typen365
6.1.3 Erweiterungsmethoden366
6.2 Abfragen mit LINQ to Objects367
6.2.1 Grundlegendes zur LINQ-Syntax368
6.2.2 Zwei alternative Schreibweisen von LINQ-Abfragen369
6.2.3 Übersicht der wichtigsten Abfrageoperatoren370
6.3 LINQ-Abfragen im Detail371
6.3.1 Die Projektionsoperatoren Select und SelectMany372
6.3.2 Der Restriktionsoperator Where374
6.3.3 Die Sortierungsoperatoren OrderBy und ThenBy374
6.3.4 Der Gruppierungsoperator GroupBy376
6.3.5 Verknüpfen mit Join378
6.3.6 Aggregat-Operatoren379
6.3.7 Verzögertes Ausführen von LINQ-Abfragen381
6.3.8 Konvertierungsmethoden382
6.3.9 Abfragen mit PLINQ383
6.4 Praxisbeispiele386
6.4.1 Die Syntax von LINQ-Abfragen verstehen386
6.4.2 Aggregat-Abfragen mit LINQ389
6.4.3 LINQ im Schnelldurchgang erlernen391
6.4.4 Strings mit LINQ abfragen und filtern394
6.4.5 Duplikate aus einer Liste oder einem Array entfernen395
6.4.6 Arrays mit LINQ initialisieren398
6.4.7 Arrays per LINQ mit Zufallszahlen füllen400
6.4.8 Einen String mit Wiederholmuster erzeugen402
6.4.9 Mit LINQ Zahlen und Strings sortieren403
6.4.10 Mit LINQ Collections von Objekten sortieren404
6.4.11 Ergebnisse von LINQ-Abfragen in ein Array kopieren407
7 C#-Sprachneuerungen im Überblick409
7.1 C# 4.0 – Visual Studio 2010409
7.1.1 Datentyp dynamic409
7.1.2 Benannte und optionale Parameter410
7.1.3 Covarianz und Contravarianz412
7.2 C# 5.0 – Visual Studio 2012412
7.2.1 Async und Await412
7.2.2 CallerInfo412
7.3 Visual Studio 2013413
7.4 C# 6.0 – Visual Studio 2015413
7.4.1 String Interpolation413
7.4.2 Schreibgeschützte AutoProperties413
7.4.3 Initialisierer für AutoProperties414
7.4.4 Expression Body Funktionsmember414
7.4.5 using static414
7.4.6 Bedingter Nulloperator415
7.4.7 Ausnahmenfilter415
7.4.8 nameof-Ausdrücke416
7.4.9 await in catch und finally416
7.4.10 Indexinitialisierer416
7.5 C# 7.0 – Visual Studio 2017417
7.5.1 out-Variablen417
7.5.2 Tupel417
7.5.3 Mustervergleich418
7.5.4 Discards420
7.5.5 Lokale ref-Variablen und Rückgabetypen420
7.5.6 Lokale Funktionen420
7.5.7 Mehr Expression-Bodied Member420
7.5.8 throw-Ausdrücke421
7.5.9 Verbesserung der numerischen literalen Syntax421
Teil II: Technologien423
8 Zugriff auf das Dateisystem425
8.1 Grundlagen425
8.1.1 Klassen für den Zugriff auf das Dateisystem426
8.1.2 Statische versus Instanzen-Klasse426
8.2 Übersichten427
8.2.1 Methoden der Directory-Klasse428
8.2.2 Methoden eines DirectoryInfo-Objekts428
8.2.3 Eigenschaften eines DirectoryInfo-Objekts428
8.2.4 Methoden der File-Klasse429
8.2.5 Methoden eines FileInfo-Objekts430
8.2.6 Eigenschaften eines FileInfo-Objekts430
8.3 Operationen auf Verzeichnisebene431
8.3.1 Existenz eines Verzeichnisses/einer Datei feststellen431
8.3.2 Verzeichnisse erzeugen und löschen431
8.3.3 Verzeichnisse verschieben und umbenennen432
8.3.4 Aktuelles Verzeichnis bestimmen432
8.3.5 Unterverzeichnisse ermitteln433
8.3.6 Alle Laufwerke ermitteln433
8.3.7 Dateien kopieren und verschieben434
8.3.8 Dateien umbenennen435
8.3.9 Dateiattribute feststellen435
8.3.10 Verzeichnis einer Datei ermitteln437
8.3.11 Alle im Verzeichnis enthaltenen Dateien ermitteln437
8.3.12 Dateien und Unterverzeichnisse ermitteln438
8.4 Zugriffsberechtigungen439
8.4.1 ACL und ACE439
8.4.2 SetAccessControl-Methode439
8.4.3 Zugriffsrechte anzeigen440
8.5 Weitere wichtige Klassen441
8.5.1 Die Path-Klasse441
8.5.2 Die Klasse FileSystemWatcher442
8.5.3 Die Klasse ZipArchive443
8.6 Datei- und Verzeichnisdialoge445
8.6.1 OpenFileDialog und SaveFileDialog445
8.6.2 FolderBrowserDialog447
8.7 Praxisbeispiele448
8.7.1 Infos über Verzeichnisse und Dateien gewinnen448
8.7.2 Eine Verzeichnisstruktur in die TreeView einlesen451
8.7.3 Mit LINQ und RegEx Verzeichnisbäume durchsuchen454
9 Dateien lesen und schreiben459
9.1 Grundprinzip der Datenpersistenz459
9.1.1 Dateien und Streams459
9.1.2 Die wichtigsten Klassen460
9.1.3 Erzeugen eines Streams461
9.2 Dateiparameter461
9.2.1 FileAccess461
9.2.2 FileMode462
9.2.3 FileShare462
9.3 Textdateien463
9.3.1 Eine Textdatei beschreiben bzw. neu anlegen463
9.3.2 Eine Textdatei lesen464
9.4 Binärdateien466
9.4.1 Lese-/Schreibzugriff466
9.4.2 Die Methoden ReadAllBytes und WriteAllBytes467
9.4.3 Erzeugen von BinaryReader/BinaryWriter467
9.5 Sequenzielle Dateien468
9.5.1 Lesen und Schreiben von strukturierten Daten468
9.5.2 Serialisieren von Objekten469
9.6 Dateien verschlüsseln und komprimieren470
9.6.1 Das Methodenpärchen Encrypt/Decrypt470
9.6.2 Verschlüsseln unter Windows Vista/7/8/10471
9.6.3 Verschlüsseln mit der CryptoStream-Klasse472
9.6.4 Dateien komprimieren473
9.7 Memory Mapped Files474
9.7.1 Grundprinzip474
9.7.2 Erzeugen eines MMF475
9.7.3 Erstellen eines Map View475
9.8 Praxisbeispiele476
9.8.1 Auf eine Textdatei zugreifen476
9.8.2 Einen Objektbaum persistent speichern480
9.8.3 Ein Memory Mapped File (MMF) verwenden487
9.8.4 Hex-Dezimal-Bytes-Konverter489
9.8.5 Eine Datei verschlüsseln493
9.8.6 Eine Datei komprimieren496
9.8.7 PDFs erstellen/exportieren498
9.8.8 Eine CSV-Datei erstellen501
9.8.9 Eine CSV-Datei mit LINQ lesen und auswerten504
9.8.10 Einen korrekten Dateinamen erzeugen506
10 Asynchrone Programmierung507
10.1 Übersicht507
10.1.1 Multitasking versus Multithreading508
10.1.2 Deadlocks509
10.1.3 Racing510
10.2 Programmieren mit Threads511
10.2.1 Einführungsbeispiel512
10.2.2 Wichtige Thread-Methoden513
10.2.3 Wichtige Thread-Eigenschaften515
10.2.4 Einsatz der ThreadPool-Klasse516
10.3 Sperrmechanismen518
10.3.1 Threading ohne lock518
10.3.2 Threading mit lock520
10.3.3 Die Monitor-Klasse522
10.3.4 Mutex526
10.3.5 Methoden für die parallele Ausführung sperren527
10.3.6 Semaphore528
10.4 Interaktion mit der Programmoberfläche529
10.4.1 Die Werkzeuge530
10.4.2 Einzelne Steuerelemente mit Invoke aktualisieren530
10.4.3 Mehrere Steuerelemente aktualisieren532
10.4.4 Ist ein Invoke-Aufruf nötig?532
10.4.5 Und was ist mit WPF?533
10.5 Timer-Threads535
10.6 Die BackgroundWorker-Komponente536
10.7 Asynchrone Programmierentwurfsmuster538
10.7.1 Kurzübersicht539
10.7.2 Polling540
10.7.3 Callback verwenden542
10.7.4 Callback mit Parameterübergabe verwenden542
10.7.5 Callback mit Zugriff auf die Programmoberfläche544
10.8 Asynchroner Aufruf beliebiger Methoden545
10.8.1 Die Beispielklasse545
10.8.2 Asynchroner Aufruf ohne Callback546
10.8.3 Asynchroner Aufruf mit Callback und Anzeigefunktion547
10.8.4 Aufruf mit Rückgabewerten (per Eigenschaft)548
10.8.5 Aufruf mit Rückgabewerten (per EndInvoke)549
10.9 Es geht auch einfacher – async und await550
10.9.1 Der Weg von synchron zu asynchron550
10.9.2 Achtung: Fehlerquellen!552
10.9.3 Eigene asynchrone Methoden entwickeln554
10.10 Praxisbeispiele557
10.10.1 Spieltrieb & Multithreading erleben557
10.10.2 Prozess- und Thread-Informationen gewinnen570
10.10.3 Ein externes Programm starten575
11 Die Task Parallel Library579
11.1 Überblick579
11.1.1 Parallel-Programmierung579
11.1.2 Möglichkeiten der TPL582
11.1.3 Der CLR-Threadpool582
11.2 Parallele Verarbeitung mit Parallel.Invoke583
11.2.1 Aufrufvarianten584
11.2.2 Einschränkungen585
11.3 Verwendung von Parallel.For585
11.3.1 Abbrechen der Verarbeitung587
11.3.2 Auswerten des Verarbeitungsstatus588
11.3.3 Und was ist mit anderen Iterator-Schrittweiten?589
11.4 Collections mit Parallel.ForEach verarbeiten590
11.5 Die Task-Klasse591
11.5.1 Einen Task erzeugen591
11.5.2 Den Task starten592
11.5.3 Datenübergabe an den Task594
11.5.4 Wie warte ich auf das Ende des Task?595
11.5.5 Tasks mit Rückgabewerten597
11.5.6 Die Verarbeitung abbrechen600
11.5.7 Fehlerbehandlung604
11.5.8 Weitere Eigenschaften605
11.6 Zugriff auf das User-Interface606
11.6.1 Task-Ende und Zugriff auf die Oberfläche606
11.6.2 Zugriff auf das UI aus dem Task heraus608
11.7 Weitere Datenstrukturen im Überblick610
11.7.1 Threadsichere Collections610
11.7.2 Primitive für die Threadsynchronisation611
11.8 Parallel LINQ (PLINQ)611
11.9 Praxisbeispiel: Spieltrieb – Version 2611
11.9.1 Aufgabenstellung612
11.9.2 Global-Klasse612
11.9.3 Controller-Klasse613
11.9.4 LKW-Klasse615
11.9.5 Schiff-Klasse616
11.9.6 Oberfläche619
12 Fehlersuche und Behandlung621
12.1 Der Debugger621
12.1.1 Allgemeine Beschreibung621
12.1.2 Die wichtigsten Fenster622
12.1.3 Debugging-Optionen625
12.1.4 Praktisches Debugging am Beispiel628
12.2 Arbeiten mit Debug und Trace632
12.2.1 Wichtige Methoden von Debug und Trace632
12.2.2 Besonderheiten der Trace-Klasse636
12.2.3 TraceListener-Objekte637
12.3 Caller Information639
12.3.1 Attribute639
12.3.2 Anwendung640
12.4 Fehlerbehandlung641
12.4.1 Anweisungen zur Fehlerbehandlung641
12.4.2 try-catch641
12.4.3 try-finally646
12.4.4 Das Standardverhalten bei Ausnahmen festlegen649
12.4.5 Die Exception-Klasse650
12.4.6 Fehler/Ausnahmen auslösen651
12.4.7 Eigene Fehlerklassen651
12.4.8 Exceptionhandling zur Entwurfszeit653
12.4.9 Code Contracts654
13 XML in Theorie und Praxis655
13.1 XML – etwas Theorie655
13.1.1 Übersicht655
13.1.2 Der XML-Grundaufbau658
13.1.3 Wohlgeformte Dokumente659
13.1.4 Processing Instructions (PI)661
13.1.5 Elemente und Attribute662
13.1.6 Verwendbare Zeichensätze663
13.2 XSD-Schemas666
13.2.1 XSD-Schemas und ADO.NET666
13.2.2 XML-Schemas in Visual Studio analysieren668
13.2.3 XML-Datei mit XSD-Schema erzeugen672
13.2.4 XSD-Schema aus einer XML-Datei erzeugen673
13.3 Verwendung des DOM unter .NET673
13.3.1 Übersicht673
13.3.2 DOM-Integration in C#675
13.3.3 Laden von Dokumenten675
13.3.4 Erzeugen von XML-Dokumenten676
13.3.5 Auslesen von XML-Dateien678
13.3.6 Direktzugriff auf einzelne Elemente679
13.3.7 Einfügen von Informationen680
13.3.8 Suchen in den Baumzweigen683
13.4 XML-Verarbeitung mit LINQ to XML686
13.4.1 Die LINQ to XML-API686
13.4.2 Neue XML-Dokumente erzeugen688
13.4.3 Laden und Sichern von XML-Dokumenten690
13.4.4 Navigieren in XML-Daten691
13.4.5 Auswählen und Filtern693
13.4.6 Manipulieren der XML-Daten694
13.4.7 XML-Dokumente transformieren695
13.5 Weitere Möglichkeiten der XML-Verarbeitung698
13.5.1 XML-Daten aus Objektstrukturen erzeugen698
13.5.2 Schnelles Suchen in XML-Daten mit XPathNavigator702
13.5.3 Schnelles Auslesen von XML-Daten mit XmlReader704
13.5.4 Erzeugen von XML-Daten mit XmlWriter706
13.5.5 XML transformieren mit XSLT708
13.6 JSON – JavaScriptObjectNotation710
13.6.1 Grundlagen710
13.6.2 De-/Serialisierung mit JSON710
13.7 Praxisbeispiele713
13.7.1 Mit dem DOM in XML-Dokumenten navigieren713
13.7.2 XML-Daten in eine TreeView einlesen717
13.7.3 In Dokumenten mit dem XPathNavigator navigieren721
14 Einführung in ADO.NET und Entity Framework727
14.1 Eine kleine Übersicht727
14.1.1 Die ADO.NET-Klassenhierarchie727
14.1.2 Die Klassen der Datenprovider729
14.1.3 Das Zusammenspiel der ADO.NET-Klassen731
14.2 Das Connection-Objekt732
14.2.1 Allgemeiner Aufbau732
14.2.2 SqlConnection732
14.2.3 Schließen einer Verbindung733
14.2.4 Eigenschaften des Connection-Objekts734
14.2.5 Methoden des Connection-Objekts736
14.2.6 Der ConnectionStringBuilder737
14.3 Das Command-Objekt737
14.3.1 Erzeugen und Anwenden eines Command-Objekts738
14.3.2 Erzeugen mittels CreateCommand-Methode739
14.3.3 Eigenschaften des Command-Objekts739
14.3.4 Methoden des Command-Objekts741
14.3.5 Freigabe von Connection- und Command-Objekten743
14.4 Parameter-Objekte744
14.4.1 Erzeugen und Anwenden eines Parameter-Objekts744
14.4.2 Eigenschaften des Parameter-Objekts745
14.5 Das CommandBuilder-Objekt746
14.5.1 Erzeugen746
14.5.2 Anwenden746
14.6 Das DataReader-Objekt747
14.6.1 DataReader erzeugen747
14.6.2 Daten lesen748
14.6.3 Eigenschaften des DataReaders749
14.6.4 Methoden des DataReaders749
14.7 Das DataAdapter-Objekt750
14.7.1 DataAdapter erzeugen750
14.7.2 Command-Eigenschaften751
14.7.3 Fill-Methode752
14.7.4 Update-Methode753
14.8 Entity Framework754
14.8.1 Überblick754
14.8.2 DatabaseFirst756
14.8.3 CodeFirst764
14.9 Praxisbeispiele769
14.9.1 Wichtige ADO.NET-Objekte im Einsatz769
14.9.2 Eine Aktionsabfrage ausführen771
14.9.3 Eine StoredProcedure aufrufen773
14.9.4 Die Datenbank aktualisieren776
15 Das DataSet781
15.1 Grundlegende Features des DataSets781
15.1.1 Die Objekthierarchie782
15.1.2 Die wichtigsten Klassen782
15.1.3 Erzeugen eines DataSets783
15.2 Das DataTable-Objekt785
15.2.1 DataTable erzeugen785
15.2.2 Spalten hinzufügen785
15.2.3 Zeilen zur DataTable hinzufügen786
15.2.4 Auf den Inhalt einer DataTable zugreifen787
15.3 Die DataView789
15.3.1 Erzeugen einer DataView790
15.3.2 Sortieren und Filtern von Datensätzen790
15.3.3 Suchen von Datensätzen791
15.4 Typisierte DataSets791
15.4.1 Ein typisiertes DataSet erzeugen792
15.4.2 Das Konzept der Datenquellen793
15.4.3 Typisierte DataSets und TableAdapter794
15.5 Die Qual der Wahl795
15.5.1 DataReader – der schnelle Lesezugriff796
15.5.2 DataSet – die Datenbank im Hauptspeicher796
15.5.3 Objektrelationales Mapping – die Zukunft?797
15.6 Praxisbeispiele798
15.6.1 In der DataView sortieren und filtern798
15.6.2 Suche nach Datensätzen800
15.6.3 Ein DataSet in einen XML-String serialisieren802
15.6.4 Untypisiertes DataSet in ein typisiertes konvertieren806
16 Verteilen von Anwendungen813
16.1 ClickOnce-Deployment814
16.1.1 Übersicht/Einschränkungen814
16.1.2 Die Vorgehensweise815
16.1.3 Ort der Veröffentlichung815
16.1.4 Anwendungsdateien816
16.1.5 Erforderliche Komponenten817
16.1.6 Aktualisierungen818
16.1.7 Veröffentlichungsoptionen819
16.1.8 Veröffentlichen820
16.1.9 Verzeichnisstruktur820
16.1.10 Der Webpublishing-Assistent822
16.1.11 Neue Versionen erstellen823
16.2 Setup-Projekte823
16.2.1 Installation823
16.2.2 Ein neues Setup-Projekt825
16.2.3 Dateisystem-Editor830
16.2.4 Registrierungs-Editor831
16.2.5 Dateityp-Editor832
16.2.6 Benutzeroberflächen-Editor832
16.2.7 Editor für benutzerdefinierte Aktionen833
16.2.8 Editor für Startbedingungen834
17 Weitere Techniken835
17.1 Zugriff auf die Zwischenablage835
17.1.1 Das Clipboard-Objekt835
17.1.2 Zwischenablage-Funktionen für Textboxen837
17.2 Arbeiten mit der Registry838
17.2.1 Allgemeines838
17.2.2 Registry-Unterstützung in .NET840
17.3 .NET-Reflection841
17.3.1 Übersicht841
17.3.2 Assembly laden842
17.3.3 Mittels GetType und Type Informationen sammeln842
17.3.4 Dynamisches Laden von Assemblies845
17.4 Praxisbeispiele848
17.4.1 Zugriff auf die Registry848
17.4.2 Dateiverknüpfungen erzeugen850
17.4.3 Betrachter für Manifestressourcen852
17.4.4 Die Zwischenablage überwachen und anzeigen855
17.4.5 Die WIA-Library kennenlernen858
17.4.6 Auf eine Webcam zugreifen869
17.4.7 Auf den Scanner zugreifen871
17.4.8 OpenOffice.org Writer per OLE steuern877
17.4.9 Nutzer und Gruppen des aktuellen Systems ermitteln884
17.4.10 Testen, ob Nutzer in einer Gruppe enthalten ist886
17.4.11 Testen, ob der Nutzer ein Administrator ist888
17.4.12 Die IP-Adressen des Computers bestimmen889
17.4.13 Die IP-Adresse über den Hostnamen bestimmen890
17.4.14 Diverse Systeminformationen ermitteln891
17.4.15 Alles über den Bildschirm erfahren899
17.4.16 Sound per MCI aufnehmen901
17.4.17 Mikrofonpegel anzeigen904
17.4.18 Pegeldiagramm aufzeichnen906
17.4.19 Sound-und Videodateien per MCI abspielen909
18 Konsolenanwendungen919
18.1 Grundaufbau/Konzepte919
18.1.1 Unser Hauptprogramm – Program.cs920
18.1.2 Rückgabe eines Fehlerstatus921
18.1.3 Parameterübergabe922
18.1.4 Zugriff auf die Umgebungsvariablen924
18.2 Die Kommandozentrale: System.Console925
18.2.1 Eigenschaften925
18.2.2 Methoden/Ereignisse926
18.2.3 Textausgaben926
18.2.4 Farbangaben927
18.2.5 Tastaturabfragen929
18.2.6 Arbeiten mit Streamdaten930
18.3 Praxisbeispiel932
18.3.1 Farbige Konsolenanwendung932
18.3.2 Weitere Hinweise und Beispiele934
Anhang A: Glossar935
Anhang B: Wichtige Dateiextensions939
Index941
Leere Seite2

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

AUTOCAD & Inventor Magazin

AUTOCAD & Inventor Magazin

FÜHREND - Das AUTOCAD & Inventor Magazin berichtet seinen Lesern seit 30 Jahren ausführlich über die Lösungsvielfalt der SoftwareLösungen des Herstellers Autodesk. Die Produkte gehören zu ...

bank und markt

bank und markt

Zeitschrift für Banking - die führende Fachzeitschrift für den Markt und Wettbewerb der Finanzdienstleister, erscheint seit 1972 monatlich. Leitthemen Absatz und Akquise im Multichannel ...

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 ...

DHS

DHS

Die Flugzeuge der NVA Neben unser F-40 Reihe, soll mit der DHS die Geschichte der "anderen" deutschen Luftwaffe, den Luftstreitkräften der Nationalen Volksarmee (NVA-LSK) der ehemaligen DDR ...

Eishockey NEWS

Eishockey NEWS

Eishockey NEWS bringt alles über die DEL, die DEL2, die Oberliga sowie die Regionalligen und Informationen über die NHL. Dazu ausführliche Statistiken, Hintergrundberichte, Personalities ...

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 ...