Suchen und Finden
Inhalt
6
1 Vorwort
12
2 Entwicklungsumgebungen für C#
16
2.1 VISUAL STUDIO.NET
18
2.2 BORLAND C# BUILDER
50
2.3 VISUAL C# – STANDARD
75
2.4 SHARPDEVELOP
75
2.5 ASP.NET WEB MATRIX
77
2.6 SCHLUßWORT
78
3 Einführung in die Programmiersprache C#
80
3.1 GRUNDLAGEN
81
3.1.1 Hallo Welt
81
3.1.2 Operatoren
83
3.1.3 Grundkonzepte
85
3.1.4 Programme und Assemblies
89
3.2 AUSNAHMEBEHANDLUNG (EXCEPTIONS)
92
3.2.1 Exceptions auslösen
93
3.2.2 Exceptions abfangen
94
3.2.3 Die Syntax des try-catch-finally-Blocks
97
3.2.4 Exceptions bei Überlauf
98
3.3 TYPEN, VARIABLEN PARAMETER
99
3.3.1 Wert- und Referenztypen
99
3.3.2 Variablen
101
3.3.3 Parameter
103
3.3.4 Der typeof-Operator
106
3.3.5 Primitive Typen
107
3.3.6 Zeigertypen
109
3.4 ZEICHENKETTEN (STRINGS)
111
3.4.1 String-Literale
112
3.4.2 String-Literale mit Zeilenumbruch
112
3.4.3 Optimierungen durch den Compiler
113
3.4.4 Veränderbare Strings (StringBuilder)
113
3.4.5 Zeichenketten formatieren
114
3.5 ARRAYS
115
3.5.1 Eindimensionale Arrays
115
3.5.2 Mehrdimensionale Arrays
116
3.5.3 Parameter-Arrays
118
3.6 TYPKONVERTIERUNG
121
3.6.1 Einführung
121
3.6.2 Implizite Konvertierung
122
3.6.3 Explizite Konvertierung
123
3.6.4 Der is-Operator
127
3.6.5 Der as-Operator
127
3.6.6 Boxing und Unboxing
128
3.6.7 Konvertierung von Zeigertypen
129
3.7 ANWEISUNGEN
130
3.7.1 if-Abfrage
130
3.7.2 switch-Anweisung
130
3.7.3 Die while-Schleife
132
3.7.4 Die do-while-Schleife
133
3.7.5 Die for-Schleife
133
3.7.6 Die foreach-Schleife
134
3.7.7 Schleifenablauf verändern
137
3.7.8 Die Sprunganweisung (goto)
138
3.7.9 Die using-Anweisung
139
3.7.10 Die lock-Anweisung
140
3.8 KLASSEN
141
3.8.1 Konstanten
141
3.8.2 Felder
142
3.8.3 Konstruktoren
146
3.8.4 Destruktoren
148
3.8.5 Kapselung und Sichtbarkeit
149
3.8.6 Vererbung und Versionsverwaltung
151
3.8.7 Methoden überschreiben
153
3.8.8 Operatoren überladen
157
3.8.9 Eigenschaften
160
3.8.10 Indexer
167
3.9 STRUKTUREN
168
3.9.1 Strukturen deklarieren
168
3.9.2 Besonderheiten bei der Initialisierung
169
3.10 SCHNITTSTELLEN
172
3.10.1 Zugriff auf Schnittstellen-Mitglieder
172
3.10.2 Schnittstellen implementieren
175
3.10.3 Schnittstellen-Implementierung und Vererbung
178
3.10.4 Schnittstellen erneut implementieren
179
3.10.5 Abstrakte Klassen und Schnittstellen
181
3.11 AUFZÄHLUNGEN
181
3.11.1 Aufzählungstypen deklarieren
181
3.11.2 Implizite und explizite Numerierung
183
3.12 DELEGATEN EREIGNISSE
185
3.12.1 Delegaten deklarieren und instanziieren
185
3.12.2 Multicast-Delegaten
187
3.12.3 Feld-ähnliche Ereignisse
190
3.12.4 Ereigniseigenschaften
192
3.13 NAMESPACES
195
3.13.1 Namespaces deklarieren
195
3.13.2 Namespaces importieren
196
3.13.3 Aliase
199
3.14 PRÄPROZESSOR-DIREKTIVEN
200
3.14.1 Bedingungsdirektiven
200
3.14.2 Weitere Präprozessor-Direktiven
201
3.15 ATTRIBUTE
202
3.15.1 Attribute verwenden
203
3.15.2 Das Conditional-Attribut
205
3.15.3 Das Obsolete-Attribut
206
3.15.4 Das DllImport-Attribut
207
3.15.5 Benutzerdefinierte Attribute
207
3.15.6 Attribute auslesen (Reflektion)
210
3.16 DOKUMENTATIONSKOMMENTARE
211
3.16.1 Einführung
211
3.16.2 Empfohlene XML-Elemente
213
3.17 ZUSAMMENFASSUNG
216
4 Bibliotheken
218
4.1 WINDOWS FORMS
219
4.1.1 Methoden und Eigenschaften eines Formulars
220
4.1.2 Die Entwicklung mit Windows Forms
224
4.1.3 Sicherheit mit Windows Forms
246
4.1.4 Weitere Komponenten von Windows Forms…
250
4.2 ADO.NET – DATENBANKSCHNITTSTELLE
254
4.2.1 Das DataSet
255
4.2.2 … und die DataTable
257
4.2.3 Die manuelle Erstellung und Verwendung einer DataTable
257
4.2.4 Constraints
262
4.2.5 Das DataView
264
4.2.6 Der .NET-DataProvider
266
4.2.7 Unabhängigkeit (von Datenbanken) durch Interfaces
278
4.2.8 Transaktionen
283
4.2.9 Typisierte DataSets
284
4.2.10 Stored Procedures mit ADO.NET
287
4.2.11 Fazit
291
4.3 WEB SERVICES
291
4.3.1 Verwandte Technologien
292
4.3.2 SOAP, XML und Web Services
293
4.3.3 Ein erstes Beispiel
294
4.3.4 Die Protokolle HTTP-GET, HTTP-POST
299
4.3.5 Web Service via IDE
301
4.3.6 UDDI-Wegweiser durch den Web-Service-Dschungel
305
4.3.7 Dynamisches Einbinden der Web-Service-URL
306
4.3.8 Asynchroner Aufruf eines Web Service
307
4.3.9 Der Status eines Web Service
310
4.3.10 Web Services und Transaktionen
312
4.3.11 Die Web Services Enhancements 1.0
315
4.4 COMINTEROP AUTOMATISIERUNG MS OFFICE
318
4.4.1 Das erste Beispiel: C# ruft COM
320
4.4.2 Das zweite Beispiel: Excel ruft C#
322
4.4.3 Word per Fernsteuerung
324
4.4.4 Serienbriefe mit C# und MailMerge
329
4.4.5 Excel per Fernsteuerung
332
4.4.6 Outlook per Fernsteuerung
335
4.4.7 Der Internet Explorer als Steuerelement
339
4.4.8 Fazit
340
4.5 .NET-REMOTING
341
4.5.1 Die Struktur von .NET-Remoting
341
4.5.2 Proxy und SoapSuds
345
4.5.3 Dynamische Konfiguration durch XML
347
4.5.4 SAOs und CAOs
351
4.5.5 CAO (Client Activated Objects)
359
4.5.6 Transportable Objekte
363
4.5.7 Internet Information Service als Host
369
4.5.8 TCP-Channel und Binary-Formatierer
371
4.5.9 Fazit
372
4.6 ASP.NET
372
4.6.1 Die Struktur
373
4.6.2 Codebehind, der Code dahinter
376
4.6.3 ASP.NET-Anwendungen
378
4.6.4 ASP.NET-Anwendungen entwickeln mit einer IDE
388
4.6.5 Sicherheit in ASP.NET-Anwendungen
404
4.6.6 Vorlagen mit ASP.NET
415
4.6.7 Upload von Dateien mit ASP.NET
419
4.6.8 Fazit
420
5 Das .NET Compact Framework
422
5.1 DAS .NET COMPACT FRAMEWORK DETAIL
424
5.2 DER ENTWICKLUNGSPROZEß ANWENDUNG
426
5.2.1 Die Projekttypen in Visual Studio.NET
427
5.2.2 »Hallo Welt« – die erste Compact-Framework-Anwendung
429
5.2.3 Erweiterungen in Visual Studio.NET, der CF-ToolBar
431
5.2.4 Testen mit dem Emulator
431
5.2.5 Deployment auf einen Pocket PC
433
5.2.6 Die zur Verfügung stehenden Komponenten
434
5.2.7 Der Einsatz von Steuerelementen
437
5.3 DATENZUGRIFF MS SQL SERVER
439
5.3.1 Der Namespace System.Data.SqlClient
439
5.3.2 Das InputPanel-Steuerelement
447
5.3.3 Der SQLCE Server 2.0
448
5.4 DEPLOYMENT
453
5.5 KOMMUNIKATION WEB SERVICE
458
5.6 EIGENE STEUERELEMENTE
461
5.7 POCKET PC
464
5.7.1 Fazit
465
6 Techniken in C#
466
6.1 KOMPONENTEN C#
467
6.1.1 Die erste Komponente
468
6.1.2 Konfiguration der Komponente im Designer
471
6.1.3 Entwurfszeitattribute
473
6.1.4 Eine Komponente, mehreren Klassen und Namespaces
475
6.1.5 Ableitung von Steuerelementen
476
6.1.6 Das UserControl
480
6.1.7 Fazit
483
6.2 EVENTS
483
6.2.1 Events auslösen
489
6.3 MULTITHREADING
491
6.3.1 Warum Threads?
491
6.3.2 Threads und Application Domains
493
6.3.3 Threads erzeugen
494
6.3.4 Thread-Status verändern
494
6.3.5 Threads abbrechen
495
6.3.6 Datenaustausch mit Threads
498
6.3.7 Lokaler Thread-Speicher
500
6.3.8 Synchronisation mit lock
503
6.3.9 Auf eine Bedingung warten
510
6.3.10 Synchronisation hausgemacht
516
6.3.11 Typische Synchronisationsprobleme
518
6.3.12 Synchronisation im Komplettpaket
520
6.3.13 Prozeß-übergreifende Synchronisation
521
6.3.14 Ereignis-basierte Synchronisation
522
6.3.15 Synchronisation mit Windows Forms
525
6.3.16 Der Thread-Pool
528
6.4 SERIALISIERUNG OBJEKTEN
532
6.4.1 Standard-Serialisierungsformate des .NET-Framework
533
6.4.2 Zugriffsmodifizierer in der Serialisierung
534
6.4.3 Die Schlüsselwörter Serializable und NonSerialized
534
6.4.4 Serialisierung in der praktischen Anwendung
535
6.4.5 Das Interface ISerializable
545
6.5 DATEIVERARBEITUNG
550
6.5.1 Auf Dateiinhalte zugreifen
552
6.5.2 Verwendung der Streamklassen
555
6.5.3 Isolierte Speicherung
566
6.6 DELEGATEN
568
6.6.1 Der sinnvolle Einsatz von Delegaten
569
7 C# und der Rest der Welt
574
7.1 VON JAVA C#
578
7.1.1 C#-Einführung für Java-Programmierer
578
7.1.2 Konvertierung von Java-Programmen nach .NET
601
7.2 C++ C#
611
7.2.1 Grundsätzliches
611
7.2.2 Syntaktische Änderungen
612
7.2.3 Typsystem
612
7.2.4 Was es nicht mehr gibt
615
7.3 MISCHEN C# NICHT-C#
616
7.3.1 Das allgemeine Typsystem
621
7.3.2 Mischen von C# und VB.NET
623
7.3.3 VB.NET ruft C# ruft J#
626
7.3.4 Sprachübergreifendes Debugging
630
7.3.5 Mehr als eine Sprache in einem Assembly?
632
7.4 C# WINDOWS
635
7.4.1 Windows-Version ermitteln
637
8 MSIL/CIL, die .NET-Assemblersprache
646
8.1 TOOLS
647
8.2 ÜBERBLICK MSIL
648
8.3 DER STACK
654
8.4 VERWENDEN DER KLASSENBIBLIOTHEK
655
8.4.1 Arithmetik
658
8.4.2 Exceptions
658
8.4.3 Logik und Vergleiche
660
8.4.4 Rückgabe von Werten
661
8.5 DECOMPILER
662
8.6 OBFUSCATION (VERSCHLEIERUNG)
664
9 Anwendungen verteilen und installieren
666
9.1 VERTEILUNG EINER ANWENDUNG ÜBER XCOPY
667
9.1.1 GAC, StrongName & Co.
668
9.2 CAB-DATEIEN
671
9.3 DIE INSTALLER-KLASSE
672
9.4 SETUP-PROJEKTE
674
9.4.1 Windows-Setup-Projekt
674
9.4.2 Web-Setup-Projekt
678
9.4.3 Merge-Modul-Projekt
679
9.5 NO-TOUCH DEPLOYMENT
679
9.6 DEPLOYMENT .NET FRAMEWORKS
681
9.6.1 Die Bootstrapper-Option
682
9.6.2 Die Installation des Frameworks
683
10 C# auf Unix und Mac
686
10.1 ÜBERBLICK ÜBER DIE CLIS
688
10.1.1 SSCLI
688
10.1.2 Mono
689
10.1.3 Portable.NET
690
10.3.1 Klassenbibliothek – das Dateisystem
693
10.3.2 Native Calls
695
10.4.2 Windows.Forms auf den unterschiedlichen Systemen
709
11 Befehlszeilentools
712
11.1 DER C# COMPILER (CSC.EXE)
713
11.2 DER IL ASSEMBLER (ILASM.EXE)
717
11.3 IL DISASSEMBLER (ILDASM.EXE)
718
Stichwortverzeichnis
722
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.