Zum Hauptinhalt springen
Nicht aus der Schweiz? Besuchen Sie lehmanns.de
C# Kochbuch - Jay Hilyard & Stephen Teilhet

C# Kochbuch

Buch | Softcover
768 Seiten
2006
O'Reilly (Verlag)
9783897214644 (ISBN)
CHF 76,85 inkl. MwSt
  • Titel ist leider vergriffen;
    keine Neuauflage
  • Artikel merken
Das C# Kochbuch bietet Praktikern einen schnellen Zugang zu konkreten Lösungsvorschlägen und Codebeispielen rund um C# 2.0, .NET 2.0 und Visual Studio 2005. Wie alle O'Reilly-Kochbücher besteht auch dieses Buch aus "Rezepten", die so aufgebaut sind, dass Sie die beschriebenen Probleme schnell verstehen, erfahren, wie Sie sie lösen, und mögliche Kompromisse und Auswirkungen abschätzen können. Das Kochbuch hat für jeden C#-Entwickler etwas zu bieten: Hunderte von erprobten Lösungen decken alle praxisrelevanten Themen ab, die Ihnen bei C#-Projekten begegnen. Behandelt werden unter anderem:

* Zahlen, Enumerationen, Strings und Klassen
* Generische Typen, Collections und Iteratoren
* Exception-Handling und Diagnose
* Events, Delegates und anonyme Methoden
* Reguläre Ausdrücke und XML
* Dateisystem-I/O und Reflection
* Netzwerk, Sicherheit, Threading und Synchronisierung

Lösungen auf den Punkt gebracht:
Anstatt in Mailinglisten, Online-Dokumentationen oder anderen Quellen stöbern zu müssen, können Sie sich auf das C# Kochbuch verlassen, das Sie schnell mit Lösungen für verbreitete Probleme versorgt. Denn manchmal kann die Rettung vor einer langen Nacht am Computer nur ein Rezept entfernt sein.

Zusammenhänge und Hintergründe beleuchtet:
Das C# Kochbuch ist mehr als eine Sammlung von Codeschnipseln: Es erklärt die Hintergründe jeder Lösung und geht so weit in die Tiefe, dass Sie C# und das .NET-Framework besser kennen lernen und effektiver damit arbeiten können. Nicht nur Ihre C#-Projekte profitieren direkt davon - nebenbei wächst auch ganz automatisch Ihre C#-Kompetenz.

Sofort einsetzbarer Code:
Für jedes Rezept gibt es herunterladbare Codebeispiele inklusive eines Testprogramms, das es Ihnen ermöglicht, den Code zu kompilieren und zu testen, um dann die relevanten Zeilen per Copy-and-Paste in Ihre eigenen Programme einzubauen.

Jay Hilyard entwickelt seit über zwölf Jahren Anwendungen für die Windows-Plattform und seit mehr als vier Jahren Anwendungen für .NET. Er hat mehrere Artikel im MSDN Magazine veröffentlicht und arbeitet zur Zeit im New Product Development-Team bei Newmarket International in Portsmouth, New Hampshire. Wenn er nicht in .NET untergetaucht ist, verbringt Jay seine Zeit mit seiner Familie oder feuert die Patriots an.

Stephen Teilhet hat einen Abschluss als Elektroingenieur erworben, begann aber bald darauf, Software für die Windows-Plattform zu schreiben. In den letzten acht Jahren hat er für verschiedene Consulting-Unternehmen an einer ganzen Reihe von Projekten gearbeitet und sich auf Visual Basic, Visual C++, MTS, COM, MSMQ und SQL Server spezialisiert. Zur Zeit arbeitet Stephen für Compuware Numega Labs in Nashua, New Hampshire, wo er an vielen preisgekrönten Produkten einschließlich DevPartner CodeReview und zuletzt DevPartner SecurityChecker mitgewirkt hat.

Inhaltsverzeichnis



Einleitung XV

Zahlen und Enumerationen 1

1.1Prüfen, ob ein Bruch und eine Fließkommazahl ungefähr gleich sind 3
1.2Grad in Rad umwandeln 5
1.3Rad in Grad umwandeln 5
1.4Den Bit-Komplement-Operator mit verschiedenenDatentypen nutzen 6
1.5Auf einen geraden oder einen ungeraden Wert prüfen 8
1.6Das High-Word oder Low-Word zu einer Zahl ermitteln 9
1.7Eine Zahl zu einer anderen Basis in eine Zahlzur Basis 10 konvertieren 11
1.8Ermitteln, ob ein String eine gültige Zahl ist 12
1.9Einen Fließkommawert runden 13
1.10Einen Rundungsalgorithmus wählen 13
1.11Celsius in Fahrenheit konvertieren 15
1.12Fahrenheit in Celsius konvertieren 15
1.13Einen verkleinernden numerischen Cast sicher durchführen 16
1.14Einen Enumerationswert als einen String anzeigen 19
1.15Klartext in einen äquivalenten Enumerationswert umwandeln 21
1.16Prüfen, ob ein Wert ein gültiger Enumerationswert ist 22
1.17Auf eine gültige Enumeration von Flags prüfen 25
1.18Enumerierte Member in einer Bit-Maske verwenden 27
1.19Ermitteln, ob ein oder mehr Enumerations-Flags gesetzt sind 30
1.20Den ganzzahligen Anteil eines decimal- oder double-Werts ermitteln 33

Strings und Zeichen 35

2.1Die Art von Zeichen ermitteln, die ein char enthält 35
2.2Beim Vergleich von zwei Zeichen die Berücksichtigung von Groß-/Kleinschreibung steuern 39
2.3Die Positionen aller Vorkommen eines Strings in einem anderen String finden 41
2.4Groß-/Kleinschreibung beim Vergleich von Strings steuern 45
2.5Einen String mit dem Anfang oder dem Ende eines anderen Strings vergleichen 46
2.6Einen Text in einen String einfügen 48
2.7Zeichen in einen String einfügen oder aus ihm entfernen 49
2.8Binäre Daten in Base64 kodieren 52
2.9In Base64 kodierte Binärinformationen dekodieren 53
2.10Einen String, der als byte[ ] zurückgeliefert wird, wieder in einen String umwandeln 54
2.11Einen String an eine Methode übergeben, die nurein byte[ ] akzeptiert 55
2.12Strings in andere Typen umwandeln 57
2.13Einen begrenzten String erzeugen 61
2.14Elemente aus einem begrenzten String herausziehen 62
2.15Alle Zeichen in einem String durchlaufen 63
2.16Zeichen vom Ende oder Anfang eines Strings abschneiden 64
2.17Einen String darauf testen, ob er null oder leer ist 65
2.18Eine Zeile anhängen 66

Klassen und Strukturen 68

3.1Union-artige Strukturen erstellen 70
3.2Einen Typ sortierbar machen 73
3.3Einen Typ suchbar machen 78
3.4Die Operatoren +=, -=, /= und *= indirekt überladen 83
3.6Fehlerfreie Ausdrücke erstellen 89
3.7Ihre Boolesche Logik minimieren (reduzieren) 92
3.8Sprachunabhängig zwischen einfachen Typen konvertieren 95
3.9Herausfinden, wann der Cast()-Operator, der as-Operator oder der is-Operator verwendet werden sollten 102
3.10Mit dem as-Operator casten 103
3.11Den Typ einer Variablen mit dem is-Operator ermitteln 106
3.12Aus einer Methode mehrere Elemente zurückliefern 109
3.13Kommandozeilenparameter parsen 111
3.14Ein konstantes Feld zur Laufzeit initialisieren 120
3.15Klonbare Klassen erstellen 123
3.16Die Entsorgung eines Objekts sichern 126
3.17Nicht-verwaltete Ressourcen entsorgen 129
3.18Feststellen, wann Boxing und Unboxing durchgeführt wird 136

Generics 140

4.1Entscheiden, wann und wo Generics verwendet werden sollten 140
4.2Generische Typen verstehen 141
4.3ArrayList durch das generische Gegenstück ersetzen 149
4.4Stack und Queue durch ihre generischen Gegenstücke ersetzen 153
4.5Eine verkette Liste (LinkedList) implementieren 158
4.6Einen Werttyp erstellen, der auf null initialisiert werden kann 162
4.7Den Inhalt einer SortedList umkehren 164
4.8Schreibgeschützte generische Collections erstellen 192
4.9Eine Hashtable durch das generische Gegenstück ersetzen 194
4.10foreach mit generischen Dictionary-Typen verwenden 198
4.11Typargumente beschränken 199
4.12Generische Variablen auf ihre Default-Werte initialisieren 201

Collections 204

5.1Zwei Elemente in einem Array tauschen 206
5.2Ein Array schnell umkehren 208
5.3Ermitteln, wie oft ein Element in einer List vorkommt 210
5.4Alle Instanzen eines bestimmten Elements aus einer List abrufen 213
5.5Elemente in ein Array einfügen und aus einem Array entfernen 217
5.6Eine List sortiert halten 219
5.7Die Schlüssel und/oder Werte eines Dictionary sortieren 222
5.8Ein Dictionary mit Ober- und Untergrenzen für Werte erzeugen 225
5.9Momentaufnahmen von Lists in Arrays speichern 228
5.10Eine Collection zwischen Anwendungssessions erhalten 229
5.11Alle Elemente in einem Array oder einer List testen 232
5.12Eine Aktion auf jedem Element eines Arrays odereiner List durchführen 233
5.13Ein schreibgeschütztes Array- oder List-Objekt erzeugen 235

Iteratoren und partielle Typen 238

6.1In einer Klasse eine eingebettete foreach-Funktionalität implementieren 239
6.2Eigene Enumeratoren erstellen 245
6.3Auf einem generischen Typ einen Iterator implementieren 248
6.4Auf einem nicht-generischen Typ einen Iterator erzeugen 251
6.5Einem einzelnen Typ mehrere Iteratoren hinzufügen 252
6.6Einen Iterator zwingen, die Iteration zu beenden 256
6.7Mit Finally-Blöcken und Iteratoren klarkommen 257
6.8Interface-Implementierungen organisieren 261
6.9Code generieren, der sich nicht mehr im Haupt-Code-Pfad befindet 266

Exception-Handling 270

7.1Wann sollten Exceptionen abgefangen und weitergereicht werden? 278
7.2Sichern, dass Exceptions nicht verloren gehen, wenn Finally-Blöcke verwendet werden 279
7.3Exceptions von Methoden verarbeiten, die über Reflection aufgerufen wurden 282
7.4Unbehandelte Exceptions verhindern 285
7.5Exception-Informationen erhalten 287
7.6Einem Problem schnell auf den Grund gehen 291
7.7Einen neuen Exception-Typ erzeugen 292
7.8Einen Stacktrace erhalten 305
7.9Bei einem ersten Auftreten einer Exception abbrechen 308
7.10Exceptions verarbeiten, die von einem asynchronen Delegate ausgelöst werden 311
7.11Exceptions mithilfe von Exception.Data mit zusätzlichen Informationen ausstatten 312
7.12Mit unbehandelten Exceptions in WinForms-Anwendungen umgehen 314

Diagnose 317

8.1Feinstufige Kontrolle über Debugging/Tracing-Ausgaben erhalten 318
8.2Feststellen, ob ein Prozess nicht mehr reagiert 321
8.3In einer Anwendung Event-Logs nutzen 323
8.4Event-Log-Einträge durchsuchen 330
8.5Das Event-Log auf einen bestimmten Eintrag überwachen 334
8.6Einen einfachen Performance-Counter implementieren 335
8.7Komplexen Tracing-Code aktivieren und deaktivieren 339
8.8Die Standardausgabe eines Prozesses einfangen 343
8.9Eigene Debugging-Anzeigen für Ihre Klasse erstellen 345

Delegates, Events und anonyme Methoden 348

9.1Steuern, wann ein Delegate in einem Multicast-Delegate ausgelöst wird 349
9.2Die Rückgabewerte aller Delegates in einem Multicast-Delegate erhalten 353
9.3Exceptions separat für alle Delegates in einem Multicast-Delegate verarbeiten 355
9.4Synchrone Delegate-Aufrufe in asynchrone umwandeln 359
9.5Ein fortgeschrittener Suchmechanismus für Interfaces 362
9.6Veränderungen an und Hinzufügungen zu einer Hashtable beobachten 366
9.7Anonyme Methoden verwenden 374
9.8Event-Handler sauber einrichten 379
9.9In anonymen Methoden unterschiedliche Parameter-Modifier verwenden 383
9.10In C# Closures verwenden 387
9.11Mit Funktionsobjekten mehrere Operationenauf einer Liste durchführen 391

Reguläre Ausdrücke 396

10.1Treffer enumerieren 397
10.2Gruppen aus einer MatchCollection herausziehen 400
10.3Die Syntax eines regulären Ausdrucks prüfen 404
10.4Schnell nur den letzten Treffer in einem String finden 405
10.5Die elementaren String-Ersetzungsfunktionen verstärken 406
10.6Einen Tokenizer implementieren 409
10.7Die Zeilen eines Texts zählen 411
10.8Die gesamte Zeile zurückliefern, in der ein Treffer gefunden wird 414
10.9Ein bestimmtes Vorkommen eines Treffers finden 418
10.10Verbreitete Muster verwenden 420

Dateisystem-I/O 424

11.1Datei-Attribute manipulieren 425
11.2Eine Datei umbenennen 428
11.3Ein plattformunabhängiges Zeilenende-Zeichen ausgeben 429
11.4Verzeichnisattribute manipulieren 431
11.5Ein Verzeichnis umbenennen 434
11.6Mit Jokerzeichen nach Dateien oder Verzeichnissen suchen 435
11.7Einen Verzeichnisbaum erhalten 440
11.8Einen Pfad parsen 442
11.9Pfade in Umgebungsvariablen parsen 444
11.10Konsolenwerkzeuge starten und verwenden 446
11.11Warten, dass im Dateisystem ein Ereignis eintritt 447
11.12Die Versionsinformationen von zwei ausführbarenModulen vergleichen 450
11.13Informationen zu allen Laufwerken auf einem System abfragen 453
11.14Dateien komprimieren und dekomprimieren 456

Reflection 460

12.1Referenzierte Assemblies auflisten 461
12.2Exportierte Typen auflisten 463
12.3Überschriebene Methoden ermitteln 464
12.4In einer Assembly Member finden 470
12.5Die eingebetteten Typen in einer Assembly ermitteln und abrufen 471
12.6Die Vererbungshierarchie für einen Typ anzeigen 473
12.7Die Unterklassen eines Typs ermitteln 475
12.8Alle serialisierbaren Typen in einer Assembly finden 477
12.9Member dynamisch aufrufen 479
12.10Prüfen, ob ein Typ oder eine Methode generisch ist 483
12.11Informationen zu lokalen Variablen erhalten 484
12.12Einen generischen Typ erzeugen 487

Web 489

13.1Eine IP-Adresse in einen Hostnamen umwandeln 489
13.2Einen Hostnamen in eine IP-Adresse umwandeln 490
13.3Einen URI parsen 491
13.4Mit Webserver-Fehlern umgehen 495
13.5Mit einem Webserver kommunizieren 497
13.6Über einen Proxy gehen 499
13.7Das HTML zu einer URL erhalten 501
13.8Das neue WebBrowser-Steuerelement verwenden 502
13.9Datenbank-Tabellen an den Cache binden 504
13.10Eine ASP.NET-Website mittels Programmierung aufbauen 506
13.11Daten für das Web maskieren 509
13.12Die Klasse UriBuilder nutzen 511
13.13Die Konfiguration Ihrer Webanwendung einsehen und ändern 514
13.14Bei der Arbeit mit HTTP gecachte Ergebnisse verwenden 516
13.15Die angepassten Fehlerseiten eines Webservers prüfen 518

XML 521

14.1XML-Daten in Dokumentordnung lesen oder schreiben 522
14.2Den Inhalt eines XML-Dokuments durchsuchen 526
14.3XML validieren 528
14.4Ein XML-Dokument über ein Programm aufbauen 534
14.5Änderungen an einem XML-Dokument feststellen 536
14.6Ungültige Zeichen in einem XML-String behandeln 539
14.7XML transformieren 542
14.8Modifizierte XML-Dokumente validieren, ohne sie neu zu laden 546
14.9XSLT-Transformationen erweitern 549
14.10Schemas aus vorhandenen XML-Dateien ableiten 553
14.11XSLT-Transformationen Parameter übergeben 554

Netzwerk 559

15.1Formulareingaben simulieren 559
15.2Daten von einem Server herunterladen 563
15.3Aus einem Programm heraus pingen 565
15.4Über den SMPT-Dienst SMTP-Mails senden 567
15.5Sockets nutzen, um die Ports auf einer Maschine zu scannen 572
15.6Die aktuellen Internet-Verbindungseinstellungen nutzen 577
15.7Über FTP eine Datei herunterladen 584

Sicherheit 586

16.1Den Zugriff auf Typen in einer lokalen Assembly steuern 586
16.2Einen String verschlüsseln und entschlüsseln 596
16.3Eine Datei verschlüsseln und entschlüsseln 601
16.4Kryptographische Informationen aufräumen 606
16.5Prüfen, dass ein String bei einer Übertragung nicht beschädigt wurde 608
16.6Daten sicher speichern 612
16.7Eine Sicherheitszusicherung absichern 619
16.8Prüfen, dass einer Assembly bestimmte Berechtigungen verliehen wurden 622
16.9Die Angriffsfläche einer Assembly minimieren 623
16.10Sicherheits/Audit-Informationen erhalten 624
16.11Zugriff auf eine Datei oder einen Registrierungsschlüssel gestatten bzw. widerrufen 630
16.12Stringdaten mit sicheren Strings absichern 633
16.13web.config-Informationen verschlüsseln 636
16.14Den vollständigen Grund dafür erhalten, dass eine SecurityException ausgelöst wurde 638
16.15Sichere Unicode-Kodierung erreichen 640
16.16Ein sichereres Datei-Handle erhalten 642

Threading und Synchronisierung 644

17.1Thread-gebundene statische Felder erzeugen 644
17.2Thread-sicheren Zugriff auf Klassen-Member bieten 647
17.3Stillschweigende Thread-Beendigung verhindern 653
17.4Thread-spezifische Daten privat speichern 656
17.5Über Semaphore Mehrfachzugriff auf Ressourcen bieten 659
17.6Mehrere Prozesse mit einem Mutex synchronisieren 664
17.7Events für die Thread-Kooperation einsetzen 676
17.8Benannte Events einsetzen 678
17.9Atomare Operationen zwischen Threads durchführen 682

Werkzeugkasten 685

18.1Mit dem Herunterfahren des Betriebssystems, dem Power Management oder Änderungen der Benutzersitzungen arbeiten 685
18.2Einen Dienst steuern 690
18.3Die Prozesse auflisten, in denen eine Assembly geladen ist 694
18.4Message-Queues auf der lokalen Arbeitsstation verwenden 695
18.5Den Pfad zur aktuellen Version des Frameworks finden 699
18.6Die Versionen einer Assembly ermitteln, die imGlobal Assembly Cache (GAC) registriert sind 699
18.7Die Standardausgabe einfangen 702
18.8Code in seiner eigenen AppDomain ausführen 704
18.9Die Betriebssystem- und Service-Pack-Version des aktuellen Betriebssystems ermitteln 706

Index 709


Sprache deutsch
Gewicht 1265 g
Einbandart Paperback
Themenwelt Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
Schlagworte C#, C SharpNET, Visual Studio, Programmierung • C sharp (Programmiersprache) • Hardcover, Softcover / Informatik, EDV/Programmiersprachen • HC/Informatik, EDV/Programmiersprachen
ISBN-13 9783897214644 / 9783897214644
Zustand Neuware
Informationen gemäß Produktsicherheitsverordnung (GPSR)
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich
Grundlagen und praktische Anwendungen von Transpondern, kontaktlosen …

von Klaus Finkenzeller

Buch (2023)
Hanser (Verlag)
CHF 125,95
das umfassende Handbuch

von Marc Marburger

Buch | Hardcover (2024)
Rheinwerk (Verlag)
CHF 69,85