- 344 Seiten
- German
- ePUB (handyfreundlich)
- Über iOS und Android verfügbar
Kompaktkurs C# 7
Über dieses Buch
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.
Häufig gestellte Fragen
Information
1C# und das .NET-Framework
1.1Ähnlichkeiten zwischen C# und Java
- Objektorientierung
C# ist wie Java eine objektorientierte Sprache mit einfacher Vererbung. Klassen können nur von einer einzigen Klasse erben, aber mehrere Schnittstellen (Interfaces) implementieren. - Typsicherheit
C# ist eine typsichere Sprache. Viele Programmierfehler, die durch inkompatible Datentypen in Anweisungen und Ausdrücken entstehen, werden bereits vom Compiler abgefangen. Zeigerarithmetik oder ungeprüfte Typumwandlungen wie in C++ sind in Anwendungsprogrammen verboten. Zur Laufzeit wird sichergestellt, dass Array-Indizes im erlaubten Bereich liegen, dass Objekte nicht durch uninitialisierte Zeiger referenziert werden und dass Typumwandlungen zu einem definierten Ergebnis führen. - Garbage Collection
Dynamisch erzeugte Objekte werden vom Programmierer nie selbst freigegeben, sondern von einem Garbage Collector automatisch eingesammelt, sobald sie nicht mehr referenziert werden. Das beseitigt viele unangenehme Fehler, die z.B. in C++-Programmen auftreten können. - Namensräume
Was in Java Pakete sind, nennt man in C# Namensräume. Ein Namensraum ist eine Sammlung von Deklarationen und ermöglicht es, gleiche Namen in unterschiedlichem Kontext zu verwenden. - Threads
C# unterstützt leichtgewichtige parallele Prozesse in Form von Threads. Es gibt wie in Java Mechanismen zur Synchronisation und Kommunikation zwischen Prozessen. - Generizität
Sowohl Java als auch C# kennen generische Typen und Methoden. Damit kann man Bausteine herstellen, die mit anderen Typen parametrisierbar sind (z.B. Listen mit beliebigem Elementtyp). - Reflection
Wie in Java kann man auch in C# zur Laufzeit auf Typinformationen eines Programms zugreifen, Klassen dynamisch zu einem Programm hinzuladen, ja sogar Objektprogramme zur Laufzeit zusammenstellen. - Attribute
Der Programmierer kann beliebige Informationen an Klassen, Methoden oder Felder hängen und sie zur Laufzeit mittels Reflection abfragen. In Java heißt dieser Mechanismus Annotationen. - Bibliotheken
Viele Typen der C#-Bibliothek sind denen der Java-Bibliothek nachempfunden. So gibt es vertraute Typen wie Object, String, ICollection oder Stream, meist sogar mit den gleichen Methoden wie in Java.
1.2Unterschiede zwischen C# und Java
- Referenzparameter
Parameter können nicht nur durch call by value übergeben werden, wie das in Java üblich ist, sondern auch durch call by reference. Dadurch sind nicht nur Eingangs-, sondern auch Ausgangs- und Übergangsparameter realisierbar. - Objekte am Keller
Während in Java alle Objekte am Heap liegen, kann man in C# Objekte auch am Methodenaufrufkeller anlegen. Diese Objekte sind leichtgewichtig und belasten den Garbage Collector nicht. - Blockmatrizen
Für numerische Anwendungen ist das Java-Speichermodell mehrdimensionaler Arrays zu ineffizient. C# lässt dem Programmierer die Wahl, mehrdimensionale Arrays entweder wie in Java anzulegen oder als kompakte Blockmatrizen, wie das in C, Fortran oder Pascal üblich ist. - Einheitliches Typsystem
Im Gegensatz zu Java sind in C# alle Datentypen (auch int oder char) vom Typ object abgeleitet und erben die dort deklarierten Methoden. - goto-Anweisung
Die viel geschmähte goto-Anweisung wurde in C# wieder eingeführt, allerdings mit Einschränkungen, so dass man mit ihr kaum Missbrauch treiben kann. - Versionierung
Bibliotheken werden bei der Übersetzung mit einer Versionsnummer versehen. So kann eine Bibliothek gleichzeitig in verschiedenen Versionen vorhanden sein. Jede Applikation verwendet immer diejenige Version der Bibliothek, mit der sie übersetzt und getestet wurde.
- Properties und Events
Diese Eigenschaften dienen der Komponententechnologie. Properties sind spezielle Felder eines Objekts. Greift man auf sie zu, werden automatisch get- und set-Methoden aufgerufen. Mit Events kann man Ereignisse definieren, die von Komponenten ausgelöst und von anderen behandelt werden. - Indexer
Ein Index-Operator wie bei Array-Zugriffen kann durch get- und set-Methoden selbst definiert werden. - Delegates
Delegates sind im Wesentlichen das, was man in Pascal Prozedurvariablen und in C Function Pointers nennt. Sie sind allerdings etwas mächtiger. Zum Beispiel kann man mehrere Prozeduren in einer einzigen Delegate-Variablen speichern. - foreach-Schleife
Damit kann man bequem über Arrays, Listen oder Mengen iterieren. - Iteratoren
Man kann spezielle Iterator-Methoden schreiben, die eine Folge von Werten liefern, welche dann mit foreach durchlaufen werden kann. - Lambda-Ausdrücke
Lambda-Ausdrücke sind parametrisierte Codestücke, die man an Variablen zuweisen und später aufrufen kann. Sie sind eine Kurzform für namenlose Methoden. - Query-Ausdrücke
Sie erlauben SQL-ähnliche Abfragen auf Hauptspeicherdaten wie Arrays oder Listen.
1.3Das .NET-Framework
- Eine Laufzeitumgebung (die Common Language Runtime), die automatische Speicherbereinigung (garbage collection), Sicherheitsmechanismen, Versionierung und vor allem Interoperabilität zwischen verschiedenen Programmiersprachen bietet.
- Eine objektorientierte Klassenbibliothek mit umfangreichen Funktionen für grafische Benutzeroberflächen (Windows Forms), Web-Oberflächen (ASP.NET), Datenbankanschluss (ADO.NET), Web-Services, Collection-Klassen, Threads, Reflection und vieles mehr. Sie ersetzt in vielen Fällen das bisherige Windows-API und geht weit über dieses hinaus.
Inhaltsverzeichnis
- Cover
- Über den Autor
- Titel
- Impressum
- Geleitwort
- Vorwort
- Inhalt
- 1 C# und das .NET-Framework
- 2 Erste Schritte
- 3 Typen
- 4 Ausdrücke
- 5 Deklarationen
- 6 Anweisungen
- 7 Ein-/Ausgabe
- 8 Klassen und Structs
- 9 Vererbung
- 10 Interfaces
- 11 Delegates und Events
- 12 Ausnahmen
- 13 Namensräume und Assemblies
- 14 Generische Bausteine
- 15 Threads
- 16 Iteratoren
- 17 Attribute
- 18 Dokumentationskommentare
- 19 Auszug aus der .NET-Klassenbibliothek
- 20 LINQ
- 21 Asynchrone Methoden und Parallelität
- 22 Tupel
- 23 Pattern Matching
- 24 Interoperabilität mit COM
- 25 Dynamisch getypte Variablen
- 26 Diverses
- 27 Fallstudien
- A Anhang
- Literatur
- Index
- Fußnoten