Microsoft.NET Framework- Programmierung mit C#



Ähnliche Dokumente
Teil A Einführung in Microsoft Visual C# und Microsoft Visual Studio

Vererbung & Schnittstellen in C#

Objektorientierte Programmierung

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

Implementieren einer Microsoft SQL Server 2005-Datenbank M4739

Grundlagen von Python

Umzug der Datenbank Firebird auf MS SQL Server

Delegatesund Ereignisse

PHP Kurs Online Kurs Analysten Programmierer Web PHP

Vorkurs C++ Programmierung

Einführung in die Java- Programmierung

Typsystem Plattform- und Sprachenunabhängigkeit in.net

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Anleitung zu htp Mail Business htp WebMail Teamfunktionen

Microsoft Visual C# 2008

How-to: Webserver NAT. Securepoint Security System Version 2007nx

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Handbuch ECDL 2003 Professional Modul 3: Kommunikation Kalender freigeben und andere Kalender aufrufen

1. Übung zu "Numerik partieller Differentialgleichungen"

C# im Vergleich zu Java

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Lehrer: Einschreibemethoden

Javakurs zu Informatik I. Henning Heitkötter

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Das Liskovsche Substitutionsprinzip

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Java Kurs für Anfänger Einheit 5 Methoden

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

BEISPIELKLAUSUR Softwareentwicklung:

Office Objektmodell (1)

8a. Exkurs.NET. 8a.1.NET Architektur

Inhaltsverzeichnis. Einleitung und Danksagung 11 Für wen ist dieses Buch? 12 Voraussetzungen für die Arbeit mit diesem Buch 13 Danksagung 13

Word 2010 Schnellbausteine

Visual Basic Express erstes Projekt anlegen

Content Management System (CMS) Manual

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Große Übung Praktische Informatik 1

Andy Hunt. Programmieren lernen. mit Minecraft-Plugins. dpunkt.verlag

Datenbanken Microsoft Access 2010

Einführung in die Programmierung

Handbuch Amos Ersteller: EWERK MUS GmbH Erstellungsdatum:

Systemvoraussetzungen:

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

15 Social-Media-Richtlinien für Unternehmen!

ID VisitControl. Dokumentation Administration Equitania Software GmbH cmc Gruppe Seite 1

HTBVIEWER INBETRIEBNAHME

Klassenbeziehungen & Vererbung

Dokumentation: Content App Framework

1Schnelleinstieg 14. 2Wie aus einer einfachen Textdatei. 3 Wie man eigene Programme erstellt 30. Inhaltsverzeichnis. ein Programm wird 20

Javakurs 2013 Objektorientierung

Wie mache ich eine Datensicherung vom SQL Server Express

Einführung in die Programmierung

Lokale Installation von DotNetNuke 4 ohne IIS

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Objektorientierte Programmierung. Kapitel 12: Interfaces

Laborübung - Verwalten von virtuellem Speicher in Windows 7

Zählen von Objekten einer bestimmten Klasse

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmierung in C. Grundlagen. Stefan Kallerhoff

desk.modul : ABX-Lokalisierung

Microsoft Visual Studio Community 2015

Benutzerhandbuch - Elterliche Kontrolle

ArluText Textbausteinverwaltung für Word für Windows & Microsoft Outlook Schnellstart Biermann & Winzenried

SQL-Toolboxbeispielmandant Dokumentation

Windows 8.1. Grundkurs kompakt. Markus Krimm, Peter Wies 1. Ausgabe, Januar inkl. zusätzlichem Übungsanhang K-W81-G-UA

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Exception Handling, Tracing und Logging

Anforderungsanalyse: Tutor

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Java: Vererbung. Teil 3: super()

Übung - Konfigurieren einer Windows 7-Firewall

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

5.4 Klassen und Objekte

Handbuch AKSync. Inhaltsverzeichnis. Inhalt. Dienstag, 11. Juni 2013

Word-Vorlagen-System mit Outlookanbindung

Norman Security Portal - Quickstart Guide

Teil A Grundlagen 31

Archiv - Berechtigungen

Vor- und Nachteile speicheroptimierter Tabellen

Forms Composer. Document Producer 1. Document Producer

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Datenmanagement in Android-Apps. 16. Mai 2013

Pixtacy-Anbindung an CleverReach.de

Arbeiten mit Workflows Installationsleitfaden Zur Installation des d3 Workflows

Transkript:

Jeffrey Richter (Wintellect) Microsoft.NET Framework- Programmierung mit C# Zweite Ausgabe Mit einem Vorwort von Aidan Richter Microsoft

Inhaltsverzeichnis Vorwort 15 Einführung 17 Die Entwicklungsplattform: Das.NET Framework 18 Die Entwicklungsumgebung: Microsoft Visual Studio 22 Ziel dieses Buchs 22 Beispielcode und Systemvoraussetzungen 23 Dieses Buch ist perfekt 23 Danksagungen 23 Support 24 Teil I Die Grundlagen der CLR 25 1 Das Ausführungsmodell der CLR 27 Quellcode in verwaltete Module kompilieren 27 Verwaltete Module in Assemblys kombinieren 30 Laden der Common Language Runtime 32 Ausfuhren des Codes in der Assembly 35 IL und Überprüfung 40 Unsicherer Code 41 Nativen Code generieren: das Tool NGen.exe 43 Einführung in die Framework Class Library 45 Das Common Type System 47 Die Common Language Specification 49 Interoperabilität mit nicht verwaltetem Code 54 2 Anwendungen und Typen erstellen, verpacken, bereitstellen und administrieren 57 Ziele der.net Framework-Bereitstellung 58 /Typen erstellen und in Modulen zusammenfassen 59 Antwortdateien 60 /' Ein kurzer Blick auf die Metadaten 62 r Module zu einer Assembly zusammenfassen 69.NET-Assemblys in der Visual Studio-IDE zu einem Projekt hinzufügen 75 Der Assemblylinker 76 Ressourcendateien in die Assembly aufnehmen 77 Versionsinformationen über eine Assembly 78 Versionsnummern 80 Kultur 81 Einfache Anwendungsbereitstellung 82 Einfache Administration 84

8 Inhaltsverzeichnis 3 Gemeinsam genutzte Assemblys und Assemblys mit starken Namen 89 Zwei Arten von Assemblys, zwei Arten der Bereitstellung 91 Assemblys einen starken Namen geben 92 Der globale Assemblycache 97 Die interne Struktur des globalen Assemblycaches 101 Erstellen einer Assembly, die auf eine Assembly mit starkem Namen verweist 104 Assemblys mit starken Namen sind fälschungssicher 105 Verzögertes Signieren 106 Assemblys mit starken Namen privat bereitstellen 108 Wie die CLR Typverweise auflöst 109 Fortgeschrittene Administration 112 Herausgeberrichtlinien 114 Teil II Arbeiten mit Typen 119 4 Die Grundlagen von Typen '. 121 Alle Typen sind von System.Object abgeleitet 121 Typkonvertierung 123 Typkonvertierung mit den C#-Operatoren is und as 125 Namespaces und Assemblys 126 Abläufe während der Laufzeit 131 5 Primitive Typen, Verweistypen, Werttypen 141 Primitive Typen in der Programmiersprache 141 Überprüfte und nicht überprüfte Operationen mit primitiven Typen 144 Verweistypen und Werttypen 147 Boxing und Unboxing von Werttypen 152 Ändern von Feldern in einem geschachtelten Werttyp mithilfe von Schnittstellen (und warum Sie darauf verzichten sollten) 164 Gleichheit und Identität von Objekten 166 Hashcodes von Objekten 169 Teil III Entwerfen von Typen 173 6 Die Grundlagen von Typen und Membern 175 Die unterschiedlichen Arten von Typmembern 175 Sichtbarkeit von Typen 178 ' Friend-Assemblys 179 Zugriffsmodifizierer für Member 180 Statische Klassen 182 Partielle Klassen, Strukturen und Schnittstellen 183 Komponenten, Polymorphie und Versionsverwaltung 184 Wie die CLR virtuelle Methoden, Eigenschaften und Ereignisse aufruft 187 Tipps zum Festlegen der Sichtbarkeit von Typen und der Zugriffsebene von Membern 191 Virtuelle Methoden und Versionsverwaltung von Typen 194

Inhaltsverzeichnis 9 7 Konstanten und Felder 199 Konstanten 199 Felder ". 200 8 Methoden: Konstruktoren, Operatoren, Typumwandlung und Parameter 205 Instanzkonstruktoren bei Klassen (Verweistypen) 205 Instanzkonstruktoren bei Strukturen (Werttypen) 208 Typkonstruktoren 211 Leistungsaspekte bei Typkonstruktoren 214 Methoden zum Überladen von Operatoren 217 Operatoren und die Interoperabilität von Programmiersprachen 219 Methoden" für Konvertierungsoperatoren.. : 220 Argumente als Verweise an eine Methode übergeben 223 Methoden mit einer variablen Anzahl von Parametern 228 Deklarieren der Parametertypen bei einer Methode 231 Konstante Methoden und Parameter 232 9 Eigenschaften 235 Parameterlose Eigenschaften 235 Eigenschaften geschickt definieren 239 Eigenschaften mit Parametern 240 Leistungsaspekte beim Aufruf der Accessormethoden von Eigenschaften 245 Zugriffsebenen bei Eigenschaftsaccessoren 245 Generische Accessormethoden für Eigenschaften 246 10 Ereignisse 247 Einen Typ entwerfen, der ein Ereignis anbietet 248 Schritt 1: Definieren Sie einen Typ für all die zusätzlichen Informationen, die an die Empfänger des Ereignisses geschickt werden sollen 249 Schritt 2: Definieren Sie das Ereignismember 249 Schritt 3: Definieren Sie eine Methode, die das Ereignis auslöst, damit die registrierten Objekte benachrichtigt werden, dass das Ereignis eingetreten ist... 251 Schritt 4: Definieren Sie eine Methode, die die Eingaben in das gewünschte Ereignis umsetzt 252 Wie Ereignisse implementiert sind 252 Einen Typ entwerfen, der ein Ereignis empfängt 254 Ereignisse und Threadsicherheit 256 Das An- und Abmelden von Ereignisempfängern explizit steuern 257 Typen entwickeln, die viele Ereignisse definieren 259 Teil IV Wichtige Typen 261 11 Zeichen, Strings und Arbeiten mit Text 263 Zeichen 263 Der Typ System.String 266 Anlegen von Strings 266 Strings sind unveränderlich 268

10 Inhaltsverzeichnis Vergleichen von Strings 269 String-Interning 274 String-Pooling 278 Die Zeichen und Textelemente innerhalb eines Strings untersuchen 278 Sonstige Stringoperationen 280 Einen String effizient zusammenstellen 281 Anlegen eines StringBuilder-Objekts 282 Die Member von StringBuilder 282 Stringdarstellungen für ein Objekt 284 Bestimmte Formate und Kulturen 285 Mehrere Objekte in einem einzigen String formatieren 289 Benutzerdefinierte Formatierung 290 Ein Objekt aus dessen Stringdarstellung extrahieren 293 Zeichenkodierung: Konvertieren zwischen Zeichen und Bytes 295 Kodieren und Dekodieren von Zeichen- und Bytestreams 300 Kodieren und Dekodieren von Base-64-Strings 301 Sichere Strings 302 12 Enumerationstypen und Bitflags 305 Enumerationstypen 305 Bitflags 310 13 Arrays 315 Typkonvertierung bei Arrays 317 Alle Arrays sind implizit von System.Array abgeleitet 320 Alle Arrays implementieren implizit IEnumerable, ICollection und IList 320 Arrays als Parameter und Rückgabewerte 321 Arrays mit einem Startindex ungleich null 322 Leistungsaspekte beim Arrayzugriff 323 Unsicherer Arrayzugriff und eingebettete Arrays 328 14 Schnittstellen 331 Klassen- und Schnittstellenvererbung 331 Definieren einer Schnittstelle 332 Schnittstellenvererbung 334 Mehr über das Aufrufen von Schnittstellenmethoden 336 Implizite und explizite Implementierungen von Schnittstellenmethoden (was hinter den Kulissen passiert) 337 öenerische Schnittstellen 339 Einschränkungen für Generika in Schnittstellen 341 Implementieren mehrerer Schnittstellen, die Methoden mit demselben Namen und derselben Signatur haben 342 Verbessern der Typsicherheit beim Kompilieren mit expliziter Implementierung von Schnittstellenmethoden 343 Vorsicht bei expliziten Schnittstellenmethodenimplementierungen 345 Entwurfsfragen: Basisklasse oder Schnittstelle? 347

Inhaltsverzeichnis 11 15 Delegaten 351 Ein erster Blick auf Delegaten 351 Rückrufe in statische Methoden '. 354 Rückrufe in Instanzmethoden 355 Delegaten enträtselt 356 Rückrufe in mehrere Methoden (Verkettung) 360 Delegatenketten in C# 364 Einzelne Elemente einer Delegatenkette aufrufen 365 Syntaxerleichterungen für das Arbeiten mit Delegaten in C# 367 Syntaxabkürzung 1: Es braucht kein Delegatobjekt angelegt zu werden 367 Syntaxabkürzung 2: Es braucht keine Rückrufmethode definiert zu werden 368 Syntaxabkürzung 3: Es brauchen keine Parameter für die Rückrufmethode definiert zu werden 370 Syntaxabkürzung 4: Lokale Variablen brauchen nicht von Hand in eine Klasse verpackt zu werden, um sie an eine Rückrufmethode zu übergeben 370 Delegaten und Reflektion 373 16 Generika 377 Generika in der Framework Class Library 382 Die Power Collections Library von Wintellect 383 Infrastruktur von Generika 384 Offene und geschlossene Typen 385 Generische Typen und Vererbung 387 Identität von generischen Typen 388 Explosive Codevermehrung 389 Generische Schnittstellen 390 Generische Delegaten 391 Generische Methoden 392 Generische Methoden und Typherleitung 393 Generika für andere Member 394 Überprüfbarkeit und Einschränkungen 394 Primäre Einschränkungen 397 Sekundäre Einschränkungen 398 /? Konstruktoreinschränkungen 399 Andere Überprüfbarkeitsprobleme 400 17/ Benutzerdefinierte Attribute 403 Benutzerdefinierte Attribute einsetzen 404 Definieren eigener Attributklassen 407 Datentypen für Konstruktor, Felder und Eigenschaften von Attributen 410 Benutzerdefinierte Attribute auswerten 412 Zwei Attributinstanzen miteinander vergleichen 416 Benutzerdefinierte Attribute untersuchen, ohne von Attribute abgeleitete Objekte anzulegen 418 Klassen für bedingte Attribute 421

12 Inhaltsverzeichnis 18 Nullable-Werttypen 423 Nullable-Werttypen in C# 425 Der Operator ff in C# 426 Spezielle Unterstützung für Nullable-Werttypen in der CLR 427 Boxing von Nullable-Werttypen 427 Unboxing von Nullable-Werttypen 427 GetType für einen Nullable- Werttyp aufrufen 429 Schnittstellenmethoden über einen Nullable-Werttyp aufrufen 429 Teil V Die Infrastruktur der CLR 431 19 Ausnahmen '.".-..' 433 Die Evolution der Ausnahmebehandlung 434 Die Funktionsweise der Ausnahmebehandlung 436 Der fry-block 437 Der catch-block 437 Der/ma/Zy-Block 439 CLS-kompatible und nicht CLS-kompatible Ausnahmen 440 Was genau ist eine Ausnahme? 441 Die Klasse System.Exception 443 Ausnahmeklassen in der FCL 444 Auslösen einer Ausnahme 447 Definieren einer eigenen Ausnahmeklasse 447 Wie Sie Ausnahmen richtig einsetzen 451 Überprüfen Sie die Argumente Ihrer Methode 451 Sie können gar nicht genug/ina//j-blöcke haben 454 Fangen Sie nicht alles ab 455 Nach dem Abfangen einer Ausnahme die Situation bereinigen 456 Eine teilweise ausgeführte Operation abbrechen 457 Verstecken von Implementierungsdetails 458 Leistungsaspekte 460 Unbehandelte Ausnahmen 463 Stackabbilder nach Ausnahmen 465 Ausnahmen d buggen 467 20 Automatische Speicherverwaltung 471 Arbeiten^uf einer Plattform mit automatischer Speicherverwaltung 471 Ressourcen vom verwalteten Heap anfordern 473 Der Garbage Collection-Algorithmus 475 Garbage Collections und Debugging 479 Verwenden des Objektabschlusses zum Freigeben nativer Ressourcen 481 Garantierter Abschluss mithilfe von CriticalFinalizerObject-Typen 483 SafeHandle und davon abgeleitete Typen 484 Zusammenarbeit mit nicht verwaltetem Code mithilfe von SafeHandle-Typen... 486 Abschluss für verwaltete Ressourcen 488

Inhaltsverzeichnis 13 Wann werden Finafee-Methoden aufgerufen? 491 Interna des Objektabschlusses 492 Das Beseitigungsmuster: Ein Objekt zum Aufräumen zwingen 495 Einen Typ benutzen, der das Beseitigungsmuster implementiert 499 Die C#-Anweisung using 502 Ein interessantes Abhängigkeitsproblem 504 Die Lebensdauer von Objekten überwachen und von Hand steuern 505 Wiederbelebung 513 Generationen 515 Weitere Garbage Collection-Features für den Umgang mit nativen Ressourcen 520 Den Erfolg einer Operation vorhersagen, die viel Speicher braucht 524 Den Garbage Collector vom Code aus steuern 525 Weitere Leistungsaspekte des Garbage Collectors 528 Synchronisierungsfreie Objekterstellung 529 Skalierbare parallele Garbage Collections 529 Garbage Collection im Hintergrund 530 Große Objekte 531 Garbage Collections überwachen 531 21 CLR-Hosting und AppDomains 533 CLR-Hosting 533 AppDomains 537 Über AppDomain-Grenzen hinweg auf Objekte zugreifen 539 Entladen einer AppDomain 550 Wie Hosts AppDomains benutzen 551 Konsolen- und Windows Forms-Anwendungen 551 Microsoft Internet Explorer 551 Microsoft ASP.NET-Web Forms- und XML-Webdienstanwendungen 552 Microsoft SQL Server 2005 552 Die Zukunft und Ihre eigene Vorstellungskraft 553 Erweiterte Hoststeuerung 553 Die CLR mit verwaltetem Code verwalten 553 Eine robuste Hostanwendung schreiben 554 /> Wie ein Host seinen Thread zurückbekommt 555 / 22 Laden von Assemblys und Reflektion 559 f Laden von Assemblys 559 Mithilfe der Reflektion eine dynamisch erweiterbare Anwendung erstellen 563 Leistungsaspekte bei der Reflektion 564 Ermitteln, welche Typen in einer Assembly definiert sind 565 Was genau ist ein Typobjekt? 565 Erstellen einer Hierarchie aller Typen, die von Exception abgeleitet sind 567 Eine Instanz eines Typs anlegen 569 Entwerfen einer Anwendung, die Add-Ins unterstützt 572 Mithilfe der Reflektion die Member eines Typs ermitteln 574 Die Member eines Typs ermitteln 575