Microsoft Student Partner HERZLICH WILLKOMMEN C# Einführung Dennis Adrians Microsoft Student Partner
AGENDA Vorbereitung Grundlegendes C#/.NET Architektur Visual Studio Common Type System var & foreach Vererbung Generics
AGENDA Fortgeschrittenes LINQ & Lambda-Ausdrücke Delegates & Events Asynchrone Programmierung
Vorbereitung
C#/.NET Architektur C#/.NET Java CPU (x86, x64, ARM, …) kompilieren Quellcode (*.cs) .NET-Klassenbibliothek Quellcode (*.java) Java-Klassenbibliothek kompilieren kompilieren Intermediate Language (*.exe/.dll) Bytecode (*.class) Common Language Runtime Java Virtual Machine ausführen ausführen CPU (x86, x64, ARM, …)
C#/.NET Architektur C#/.NET C++ CPU (x86, x64, ARM, …) kompilieren Quellcode (*.cs) .NET-Klassenbibliothek Quellcode (*.cpp) Bibliotheken kompilieren kompilieren Intermediate Language (*.exe/.dll) Maschinencode (*.lib/.dll/.exe) Common Language Runtime ausführen ausführen CPU (x86, x64, ARM, …)
C#/.NET Framework .NET-Klassenbibliothek C#/VB/F#/C++ Intermediate Language (*.exe/.dll) Common Language Runtime
Visual Studio … eine mächtige IDE für die .NET-Entwicklung. Viele Versionen möglich. Download: https://www.visualstudio.com/de-de/ downloads/download-visual-studio-vs.aspx
Grundlegendes
Common Type System Groß-/Kleinschreibung Referenztypen Werttypen object class Referenztypen ValueType struct enum Werttypen bool int float … Groß-/Kleinschreibung Bsp.: Double & double sind in C# äquivalent
var & foreach Implizite Typsierung von Variablen mit dem var-Schlüsselwort foreach-Schleife über eine Objektauflistung, die IEnumerable implementiert Angabe der Auflistung mit in-Schlüsselwort
Vererbung Klassen können von genau einer Basisklasse erben und beliebig viele Interfaces implementieren Klassen erben von anderen oder implementieren andere Klassen mit dem :-Operator (Auto-) Properties und Methoden können unterschiedliche Zugriffsmodifizierer haben
Vererbung Mit dem virtual-Schlüsselwort markierte Methoden können überschrieben werden Methoden, die andere überschreiben müssen mit dem override-Schlüsselwort markiert werden Mit dem base-Schlüsselwort bekommt man Zugriff zur Funktionalität der Basisklasse
Generics Generische Methoden und Klassen durch Angabe von Typparametern in <T> Ermöglicht verzögerte Angabe von Typen bis zur Instanziierung oder Deklaration Es gibt unterschiedliche Generic Collections, alle implementieren IEnumerable<T>
Fortgeschrittenes
LINQ Die Language Integrated Query Features ermöglichen einfache und effiziente Abfragefunktionen auf unterschiedlichste Datenstrukturen (Arrays, Collections, SQL, ADO.NET, XML, …) Auswahl der Elemente und Struktur mit from und in Viele Standard-Funktionen werden mitgeliefert: select, where, orderby, select, …
Lambda-Ausdrücke … sind anonyme Funktionen, also lokal definierte Funktionen ohne Deklaration Verwendung: (params) => { statements; } Besonders nützlich für LINQ-Abfragen und Zuweisung an Delegates
Delegates Typ mit einer Referenz auf eine Funktion einer bestimmten Signatur Kann wie eine “Variable” verwendet werden Deklaration mit dem delegate-Schlüsselwort und der passenden Funktionssignatur
Delegates Vorhandene generische Delegates: Action und Func Action<T1, …, Tn>(T1 arg1, …, Tn argn) Func<T1, …, Tn, TResult>(T1 arg1, …, Tn argn)
Events Ereignisbasierte Programmierung ist eines der wichtigsten Konzepte der .NET-Entwicklung Erzeugung mit dem event-Schlüsselwort
Events Mit dem +=-Operator können Ereignisse von Handlern abonniert werden Handler sind Delegates! Zur Behandlung werden EventArgs übergeben
Asynchrone Programmierung Asynchrone Methoden müssen mit dem async-Schlüsselwort markiert werden Mögliche Rückgabetypen sind void, Task und Task<TResult> Mit dem await-Schlüsselwort kann auf das Resultat einer Aufgabe gewartet und entgegengenommen werden
Nützliche Links MVA: http://www.microsoftvirtualacademy.com/ Live- & Online-Schulungen MSDN: https://msdn.microsoft.com/de-de Community, Dokumentation C#: https://msdn.microsoft.com/de-de/library/618ayhy6.aspx C#-Referenz
Fragen ?