Entwicklung der Programmiersprache C#

Ähnliche Dokumente
Ich liebe Java && Ich liebe C# Rolf Borst

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Besonderheiten von C#

Algorithmen und Datenstrukturen

Neue Features in C# 2.0

Einführung in die Programmierung (EPR)

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Einführung in die Programmierung

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Zählen von Objekten einer bestimmten Klasse

Programmieren in Haskell Einführung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Einführung in die C++ Programmierung für Ingenieure

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Objektorientierte Programmierung

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

Begleitendes Praktikum zur Vorlesung Künstliche Intelligenz

2. Semester, 2. Prüfung, Lösung

Objektorientierung: Klassen und Objekte

Typumwandlungen bei Referenztypen

Vererbung & Schnittstellen in C#

Diana Lange. Generative Gestaltung Operatoren

Einführung in die Java- Programmierung

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Programmierung in C. Grundlagen. Stefan Kallerhoff

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

Große Übung Praktische Informatik 1

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Lösungsvorschlag zum Übungsblatt 1 zur Vorlesung Informatik II / WS2001/02

Delegatesund Ereignisse

Computeranwendung und Programmierung (CuP)

Einführung in die Programmierung

Graphic Coding. Klausur. 9. Februar Kurs A

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

DataTables LDAP Service usage Guide

C++ Tutorial: Timer 1

Einführung in die Programmierung für Wirtschaftsinformatik

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Scala kann auch faul sein

Die Java Stream API. Funktionale Programmierung mit der Stream API des JDK 1.8. Prof. Dr. Nikolaus Wulff

Vorkurs C++ Programmierung

Java: Vererbung. Teil 3: super()

WPF Steuerelemente Listbox, ComboBox, ListView,

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Java Einführung Collections

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Deklarationen in C. Prof. Dr. Margarita Esponda

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Einführung in Javadoc

Auswahlabfragen mit ACCESS

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

5.4 Klassen und Objekte

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

Verknüpfte Daten abfragen mit SPARQL. Thomas Tikwinski, W3C.DE/AT

Einführung in die Programmierung

Datenbanken 1. Einführung und Zugänge für die eingesetzten Resourcen. ISWeb - Information Systems & Semantic Web University of Koblenz Landau, Germany

4D Server v12 64-bit Version BETA VERSION

C# im Vergleich zu Java

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Modul 122 VBA Scribt.docx

Grundlagen von Python

Design by Contract with JML

Befehlssatz zum High Speed Interface-88-USB (HSI-88-USB) (ab Firmware 0.71) (Version 1.2)

Laborübung - Task Manager (Verwalten von Prozessen) in Windows Vista

Thomas Claudius Huber. Asynchrone Programmierung mit C#

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Cross-Platform Mobile mit.net

Datenmanagement in Android-Apps. 16. Mai 2013

Angewandte Mathematik und Programmierung

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR

Kurze Einführung in die Programmiersprache C++ und in Root

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Ingenieurinformatik Diplom-FA (C-Programmierung)

SDK zur CRM-Word-Schnittstelle

public class SternchenRechteckGefuellt {

Java Einführung Abstrakte Klassen und Interfaces

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Studentische Lösung zum Übungsblatt Nr. 7

Zusammenfassung des Handzettels für Programmieren in C

5.5.8 Öffentliche und private Eigenschaften

13. Tutorium zu Programmieren

C-Probeklausur (Informatik 1; Umfang: C, Teil 1; SS07)

Programmierkurs Java

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

Objektorientierte Programmierung

Vorlesung Informatik II

Javakurs 2013 Objektorientierung

Klausur in Programmieren

Modellierung und Programmierung 1

The app the crashes, before the breakpoint is reached: Code to the event:

Kontrollstrukturen und Funktionen in C

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Dokumentation: Content App Framework

Programmieren was ist das genau?

Programmiervorkurs WS 2012/2013. Schleifen und Methoden

5. Tutorium zu Programmieren

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Transkript:

Language Day HDM 2015 Entwicklung der Programmiersprache C# Referent: Mikhail Orleanskiy, IT-Designers GmbH (orleanskiy@it-designers.de) Stand: 6. November 2015 Eine Präsentation der IT-Designers Gruppe 1

C# 2.0 bis 5.0 C# 2.0 bis 5.0 Neu in C# 6.0 Eine Präsentation der IT-Designers Gruppe 2

C# 2.0 bis 5.0 /.NET 1.0-5.0 C# 2.0 bis 5.0.NET 1.0-5.0 Eine Präsentation der IT-Designers Gruppe 3

C# 2.0 bis 5.0 /.NET 1.0-5.0 1.0 1.0 (2002) 1.1 (2003) 2.0 (2006) 3.0 (2006) 3.5 (2007) 4.0 (2010) 4.5 (2012) 4.6/5.0 (2015) Historie.NET 1.0 bis 5.0 Eine Präsentation der IT-Designers Gruppe 4

C# 2.0 bis 5.0 /.NET 1.0-5.0 1.0 (2002) Web Services verbessert ASP.NET verbessert.net für Mobile Geräte 1.1 (2003) 2.0 (2006) 3.0 (2006) 3.5 (2007) 4.0 (2010) 1.0 4.5 (2012) 4.6/5.0 (2015) Historie.NET 1.0 bis 5.0 Eine Präsentation der IT-Designers Gruppe 4

C# 2.0 bis 5.0 /.NET 1.0-5.0 Windows Forms deutlich verbessert ASP.NET deutlich verbessert Sicherheit (ACL, Data Protection...) Networking FTP, WS2.0, SMTP... Fusion 2.0 XSLT 64 Bit C# 2.0, Generics 1.0 (2002) Web Services verbessert ASP.NET verbessert.net für Mobile Geräte 1.1 (2003) 2.0 (2006) 3.0 (2006) 3.5 (2007) 4.0 (2010) 1.0 4.5 (2012) 4.6/5.0 (2015) Historie.NET 1.0 bis 5.0 Eine Präsentation der IT-Designers Gruppe 4

C# 2.0 bis 5.0 /.NET 1.0-5.0 Windows Communication Foundation Windows Forms deutlich verbessert Windows Presentation Foundation ASP.NET deutlich verbessert Workflow Foundation Sicherheit (ACL, Data Protection...) Windows CardSpace Networking FTP, WS2.0, SMTP... Fusion 2.0 XSLT 64 Bit C# 2.0, Generics 1.0 (2002) Web Services verbessert ASP.NET verbessert.net für Mobile Geräte 1.1 (2003) 2.0 (2006) 3.0 (2006) 3.5 (2007) 4.0 (2010) 1.0 4.5 (2012) 4.6/5.0 (2015) Historie.NET 1.0 bis 5.0 Eine Präsentation der IT-Designers Gruppe 4

C# 2.0 bis 5.0 /.NET 1.0-5.0 CLR Security verbessert (Vista Support) C# 3.0 LINQ Windows Communication Foundation Windows Forms deutlich verbessert Windows Presentation Foundation ASP.NET deutlich verbessert CLR Speed Improvements (Thread Pools etc.) Garbage Collector verbessert Workflow Foundation Sicherheit (ACL, Data Protection...) BCL (Basisklassen) neue Methoden Extensibility (System.Addin.*) Windows CardSpace Networking FTP, WS2.0, SMTP... Fusion 2.0 XSLT 64 Bit C# 2.0, Generics 1.0 (2002) Web Services verbessert ASP.NET verbessert.net für Mobile Geräte 1.1 (2003) 2.0 (2006) 3.0 (2006) 3.5 (2007) 4.0 (2010) 1.0 4.5 (2012) 4.6/5.0 (2015) Historie.NET 1.0 bis 5.0 Eine Präsentation der IT-Designers Gruppe 4

C# 2.0 bis 5.0 /.NET 1.0-5.0 Covariance and Contravariance in Generics Dynamic Language Runtime CLR Security verbessert (Vista Support) C# 3.0 LINQ Windows Communication Foundation Windows Forms deutlich verbessert Background Garbage Collection Code Contracts Windows Presentation Foundation ASP.NET deutlich verbessert CLR Speed Improvements (Thread Pools etc.) Managed Extensibility Framework Garbage Collector verbessert Workflow Foundation Sicherheit (ACL, Data Protection...) Parallel Computing (PLINQ) Memory-Mapped Files BCL (Basisklassen) neue Methoden Extensibility (System.Addin.*) Windows CardSpace Networking FTP, WS2.0, SMTP... Fusion 2.0 XSLT 64 Bit C# 2.0, Generics 1.0 (2002) Web Services verbessert ASP.NET verbessert.net für Mobile Geräte 1.1 (2003) 2.0 (2006) 3.0 (2006) 3.5 (2007) 4.0 (2010) 1.0 4.5 (2012) 4.6/5.0 (2015) Historie.NET 1.0 bis 5.0 Eine Präsentation der IT-Designers Gruppe 4

C# 2.0 bis 5.0 /.NET 1.0-5.0 WinRT / Windows 8 / Metro Parallel Computing (async / await) Covariance and Contravariance in Generics Dynamic Language Runtime CLR Security verbessert (Vista Support) C# 3.0 LINQ Windows Communication Foundation Windows Forms deutlich verbessert Background Garbage Collection Code Contracts Windows Presentation Foundation ASP.NET deutlich verbessert CLR Speed Improvements (Thread Pools etc.) Managed Extensibility Framework Garbage Collector verbessert Workflow Foundation Sicherheit (ACL, Data Protection...) Parallel Computing (PLINQ) Memory-Mapped Files BCL (Basisklassen) neue Methoden Extensibility (System.Addin.*) Windows CardSpace Networking FTP, WS2.0, SMTP... Fusion 2.0 XSLT 64 Bit C# 2.0, Generics 1.0 (2002) Web Services verbessert ASP.NET verbessert.net für Mobile Geräte 1.1 (2003) 2.0 (2006) 3.0 (2006) 3.5 (2007) 4.0 (2010) 1.0 4.5 (2012) 4.6/5.0 (2015) Historie.NET 1.0 bis 5.0 Eine Präsentation der IT-Designers Gruppe 4

C# 2.0 bis 5.0 /.NET 1.0-5.0 Compiler as a Service / Roslyn WinRT / Windows 8 / Metro Open Source... Parallel Computing (async / await) Covariance and Contravariance in Generics Dynamic Language Runtime CLR Security verbessert (Vista Support) C# 3.0 LINQ Windows Communication Foundation Windows Forms deutlich verbessert Background Garbage Collection Code Contracts Windows Presentation Foundation ASP.NET deutlich verbessert CLR Speed Improvements (Thread Pools etc.) Managed Extensibility Framework Garbage Collector verbessert Workflow Foundation Sicherheit (ACL, Data Protection...) Parallel Computing (PLINQ) Memory-Mapped Files BCL (Basisklassen) neue Methoden Extensibility (System.Addin.*) Windows CardSpace Networking FTP, WS2.0, SMTP... Fusion 2.0 XSLT 64 Bit C# 2.0, Generics 1.0 (2002) Web Services verbessert ASP.NET verbessert.net für Mobile Geräte 1.1 (2003) 2.0 (2006) 3.0 (2006) 3.5 (2007) 4.0 (2010) 1.0 4.5 (2012) 4.6/5.0 (2015) Historie.NET 1.0 bis 5.0 Eine Präsentation der IT-Designers Gruppe 4

C# 2.0 bis 5.0 / Neu in C# 2.0 C# 2.0 bis 5.0 Neu in C# 2.0 Eine Präsentation der IT-Designers Gruppe 5

C# 2.0 bis 5.0 / Neu in C# 2.0 Wie lässt sich folgender Code vereinfachen? public static void Main () Console. WriteLine ( MachNullZuString (" Hallo ")); Console. WriteLine ( MachNullZuString ( null )); static string MachNullZuString ( string v) if(v!= null ) return v; return " nullwert "; C# 2.0??? Eine Präsentation der IT-Designers Gruppe 6

C# 2.0 bis 5.0 / Neu in C# 2.0 Wie lässt sich folgender Code vereinfachen? public static void Main () Console. WriteLine ( MachNullZuString (" Hallo ")); Console. WriteLine ( MachNullZuString ( null )); static string MachNullZuString ( string v) return (v!= null )? v : " nullwert "; C# 2.0??? Eine Präsentation der IT-Designers Gruppe 6

C# 2.0 bis 5.0 / Neu in C# 2.0 Wie lässt sich folgender Code vereinfachen? public static void Main () Console. WriteLine ( MachNullZuString (" Hallo ")); Console. WriteLine ( MachNullZuString ( null )); static string MachNullZuString ( string v) return v?? " nullwert "; C# 2.0??? Eine Präsentation der IT-Designers Gruppe 6

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 2.0 bis 5.0 Neu in C# 3.0 Eine Präsentation der IT-Designers Gruppe 7

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Erlaubt es, den Typ einer lokalen Variablen herzuleiten var alter = 30; var name = " Kevin Erath "; var wurzelzwei = Math. Sqrt (2); var meinarray = new int [] 1, 2, 3, 4 ; Ist das Gleiche wie int alter = 30; string name = " Kevin Erath "; double wurzelzwei = Math. Sqrt (2); int [] meinarray = new int [] 1, 2, 3, 4 ; Was ist Type Inference? Eine Präsentation der IT-Designers Gruppe 8

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Erweiterungsmethoden ermöglichen es einem bereits definierten Typ, nachträglich Methoden hinzuzufügen Nur verwenden, wenn der zu modifizierende Typ nicht direkt verändert werden kann - z. B. bei Klassen die als sealed gekennzeichnet sind public static class MyExtensions public static bool IsKevin ( this string str) return str == " Kevin "; string teststring = " Thomas "; Console. WriteLine ( teststring. IsKevin ()); Console. WriteLine (" Kevin ". IsKevin ()); Extension Methods Eine Präsentation der IT-Designers Gruppe 9

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Erweiterungsmethoden ermöglichen es einem bereits definierten Typ, nachträglich Methoden hinzuzufügen Nur verwenden, wenn der zu modifizierende Typ nicht direkt verändert werden kann - z. B. bei Klassen die als sealed gekennzeichnet sind public static class MyExtensions public static bool IsKevin ( this string str) return str == " Kevin "; string teststring = " Thomas "; Console. WriteLine ( teststring. IsKevin ()); Console. WriteLine (" Kevin ". IsKevin ()); False True Extension Methods Eine Präsentation der IT-Designers Gruppe 9

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Eigenschaften können vom Compiler auch automatisch implementiert werden public class Student public string Name get ; set ; public int Matrikelnummer get ; set ; Automatische Eigenschaften Eine Präsentation der IT-Designers Gruppe 10

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 C# 3.0 führt den Operator => ein, dieser wird auch als Lambda-Operator bezeichnet Der Operator verbessert die Erstellung von anonymen Methoden x => x * x (x, y) => x == y ( int x, string s) => s. Length > x () => SomeMethod () Lambda Ausdrück Eine Präsentation der IT-Designers Gruppe 11

C# 2.0 bis 5.0 / Neu in C# 3.0 x => x +1 x => return x +1; int x => x+1; C# 3.0 Der Ausdruck ist wie folgt zu verstehen: - Wende die folgende Funktion auf Variable x an. - F(x) = x+1 Wie eine Formel in der Mathematik ;-) Lambda Ausdrücke Eine Präsentation der IT-Designers Gruppe 12

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Finde alle Namen, die ein k enthalten: private static void Main () var list = new List <string > " dominik ", " roland ", " thomas ", " markus ", " alon "; var result = list. FindAll ( val => val. Contains ("k")); foreach ( var name in result ) Console. WriteLine ( name ); Lambda Ausdrücke Eine Präsentation der IT-Designers Gruppe 13

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Finde alle Namen, die ein k enthalten: private static void Main () var list = new List <string > " dominik ", " roland ", " thomas ", " markus ", " alon "; var result = list. FindAll ( val => val. Contains ("k")); foreach ( var name in result ) Console. WriteLine ( name ); dominik markus Lambda Ausdrücke Eine Präsentation der IT-Designers Gruppe 13

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Sprachänderungen in C# 3.0 haben nur ein Ziel LINQ zu ermöglichen Bietet eine native Sprache, um Datenquellen abzufragen - Abfragesprache sieht ähnlich wie SQL aus Prinzipiell gibt es drei Varianten: - DLINQ Relationale Datenabfrage - XLINQ XML-basierte Datenabfrage - Standard Query Operators Objektabfrage Language INtegrated Query Eine Präsentation der IT-Designers Gruppe 14

C# 2.0 bis 5.0 / Neu in C# 3.0 Es gibt zwei Möglichkeiten eine Datenabfrage zu formulieren: Abfragesyntax (ähnlich wie SQL) Methodensyntax (Erweiterungsmethoden) Beide Möglichkeiten sind gleichwertig. Datenabfragen mit LINQ Eine Präsentation der IT-Designers Gruppe 15

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Werte abrufen int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; IEnumerable <int > selected = from n in numbers select n; foreach ( int x in selected ) Console. WriteLine (x); LINQ Beispiel 1 Eine Präsentation der IT-Designers Gruppe 16

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Werte abrufen int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; IEnumerable <int > selected = from n in numbers select n; foreach ( int x in selected ) Console. WriteLine (x); 10 9 8 7 6 5 4 3 2 1 LINQ Beispiel 1 Eine Präsentation der IT-Designers Gruppe 16

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Werte abrufen und um eins erhöhen int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; IEnumerable <int > selected = from n in numbers select n + 1; foreach ( int x in selected ) Console. WriteLine (x); LINQ Beispiel 2 Eine Präsentation der IT-Designers Gruppe 17

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Werte abrufen und um eins erhöhen int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; IEnumerable <int > selected = from n in numbers select n + 1; foreach ( int x in selected ) Console. WriteLine (x); 11 10 9 8 7 6 5 4 3 2 LINQ Beispiel 2 Eine Präsentation der IT-Designers Gruppe 17

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Werte abrufen, die kleiner 5 sind int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; IEnumerable <int > selected = from n in numbers where n <5 select n; foreach ( int x in selected ) Console. WriteLine (x); LINQ Beispiel 3 Eine Präsentation der IT-Designers Gruppe 18

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Werte abrufen, die kleiner 5 sind int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; IEnumerable <int > selected = from n in numbers where n <5 select n; foreach ( int x in selected ) Console. WriteLine (x); 4 3 2 1 LINQ Beispiel 3 Eine Präsentation der IT-Designers Gruppe 18

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Werte zählen, die ungerade sind int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; int ungeradezahlen = numbers. Count (n => n % 2 == 1); Console. WriteLine (" Ungerade Zahlen : " + ungeradezahlen ); LINQ Beispiel 4 Eine Präsentation der IT-Designers Gruppe 19

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Werte zählen, die ungerade sind int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; int ungeradezahlen = numbers. Count (n => n % 2 == 1); Console. WriteLine (" Ungerade Zahlen : " + ungeradezahlen ); Ungerade Zahlen : 5 LINQ Beispiel 4 Eine Präsentation der IT-Designers Gruppe 19

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Person mit bestimmtem Alter ermitteln Bisher: public IEnumerable <Person > FindPerson ( int alter ) foreach ( var person in personen ) if ( person. Age > alter ) yield return person ; LINQ Beispiel 5 Eine Präsentation der IT-Designers Gruppe 20

C# 2.0 bis 5.0 / Neu in C# 3.0 C# 3.0 Alle Person mit bestimmtem Alter ermitteln Bisher: public IEnumerable <Person > FindPerson ( int alter ) foreach ( var person in personen ) if ( person. Age > alter ) yield return person ; Mit LINQ: public IEnumerable <Person > FindPerson ( int alter ) return personen. Where (p => p.age > alter ); LINQ Beispiel 5 Eine Präsentation der IT-Designers Gruppe 20

C# 2.0 bis 5.0 / Neu in C# 3.0 Weitere Beispiele gibt es unter: http://code.msdn.microsoft.com/101-linq-samples-3fb9811b 101 LINQ Samples Eine Präsentation der IT-Designers Gruppe 21

C# 2.0 bis 5.0 / Neu in C# 4.0 C# 2.0 bis 5.0 Neu in C# 4.0 Eine Präsentation der IT-Designers Gruppe 22

C# 2.0 bis 5.0 / Neu in C# 4.0 Setzen von Defaultwerten für Übergabeparameter Aufrufer kann diese durch eigene Werte ersetzen Bisher: // Ueberladen ohne Parameter public void SagHallo () SagHallo (" Welt "); // Ueberladen mit Parameter public void SagHallo ( string name ) Console. WriteLine ("Hallo, " + name + "!"); Jetzt: public void SagHallo ( string name = " Welt ") Console. WriteLine ("Hallo, " + name + "!"); Optionale Parameter Eine Präsentation der IT-Designers Gruppe 23

C# 2.0 bis 5.0 / Neu in C# 4.0 Datenzugriff parallelisieren LINQ-Abfragen auf mehreren Kernen auszuführen Verwendet intern TPL für die Parallelisierung Unterstützt alle Standard.NET Abfrage Operatoren Es gibt zwei Möglichkeiten: - ParallelEnumerable-Klasse - AsParallel()-Erweiterungsmethode Parallel LINQ Eine Präsentation der IT-Designers Gruppe 24

C# 2.0 bis 5.0 / Neu in C# 4.0 Sequentielle Abfrage int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; IEnumerable <int > selected = from n in numbers where n <5 orderby n select n; Parallele Abfrage int [] numbers = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1; IEnumerable <int > selected = from n in numbers. AsParallel () where n <5 orderby n select n; Einfache parallele Datenabfrage Eine Präsentation der IT-Designers Gruppe 25

C# 2.0 bis 5.0 / Neu in C# 4.0 using System ; using System. Diagnostics ; using System. Linq ; class Program static void Main () var numbers = new byte [1000000000]; new Random (). NextBytes ( numbers ); var watch = new Stopwatch (); watch. Start (); // LINQ Abfrage var r1 = ( from n in numbers where n<5 orderby n select n). Count (); watch. Stop (); Console. WriteLine (" Ergebnis " + r1 + " in " + watch. Elapsed ); watch. Restart (); // PLINQ Abfrage var r2 = ( from n in numbers. AsParallel () where n<5 orderby n select n). Count (); watch. Stop (); Console. WriteLine (" Ergebnis " + r2 + " in " + watch. Elapsed ); LINQ vs. PLINQ Eine Präsentation der IT-Designers Gruppe 26

C# 2.0 bis 5.0 / Neu in C# 4.0 using System ; using System. Diagnostics ; using System. Linq ; class Program static void Main () var numbers = new byte [1000000000]; new Random (). NextBytes ( numbers ); var watch = new Stopwatch (); watch. Start (); // LINQ Abfrage var r1 = ( from n in numbers where n<5 orderby n select n). Count (); watch. Stop (); Console. WriteLine (" Ergebnis " + r1 + " in " + watch. Elapsed ); watch. Restart (); // PLINQ Abfrage var r2 = ( from n in numbers. AsParallel () where n<5 orderby n select n). Count (); watch. Stop (); Console. WriteLine (" Ergebnis " + r2 + " in " + watch. Elapsed ); Ergebnis 19532483 in 00:00:21.7839955 Ergebnis 19532483 in 00:00:05.9427227 LINQ vs. PLINQ Eine Präsentation der IT-Designers Gruppe 26

Neu in C# 6.0 C# 2.0 bis 5.0 Neu in C# 6.0 Eine Präsentation der IT-Designers Gruppe 27

Neu in C# 6.0 / Initialisierung readonly Auto-Properties Neu in C# 6.0 Initialisierung readonly Auto-Properties Eine Präsentation der IT-Designers Gruppe 28

Neu in C# 6.0 / Initialisierung readonly Auto-Properties Bisher: public class Customer public List <int > Versions get ; set ; public byte State get; private set; public Customer () Versions = new List <int >(); State = 1; C# 6.0 Jetzt: public class Customer public List <int > Versions get; set; = new List <int >(); public byte State get; = 1; Initialisierung readonly Auto-Properties Eine Präsentation der IT-Designers Gruppe 29

Neu in C# 6.0 / Interpolation von Zeichenketten Neu in C# 6.0 Interpolation von Zeichenketten Eine Präsentation der IT-Designers Gruppe 30

Neu in C# 6.0 / Interpolation von Zeichenketten Bisher: class Point public int X get; set; public int Y get; set; public override string ToString () return string. Format ("0 / 1", X, Y); C# 6.0 Jetzt: class Point public int X get; set; public int Y get; set; public override string ToString () return $"X / Y"; Interpolation von Zeichenketten Eine Präsentation der IT-Designers Gruppe 31

Neu in C# 6.0 / Lambda-Ausdrücke als Rümpfe Neu in C# 6.0 Lambda-Ausdrücke als Rümpfe Eine Präsentation der IT-Designers Gruppe 32

Neu in C# 6.0 / Lambda-Ausdrücke als Rümpfe Bisher: class Point public int X get; set; public int Y get; set; public override string ToString () return $"X / Y"; C# 6.0 Jetzt: class Point public int X get; set; public int Y get; set; public override string ToString () => $"X / Y"; Lambda-Ausdrücke als Methodenrumpf Eine Präsentation der IT-Designers Gruppe 33

Neu in C# 6.0 / Lambda-Ausdrücke als Rümpfe Bisher: public class Point public int X get; set; public int Y get; set; public double Distance get return Math. Sqrt (X*X+Y*Y); C# 6.0 Jetzt: public class Point public int X get; set; public int Y get; set; public double Distance => Math. Sqrt (X*X+Y*Y); Lambda-Ausdrücke als Eigenschaftenrumpf Eine Präsentation der IT-Designers Gruppe 34

Neu in C# 6.0 / Null-Wert Operator Neu in C# 6.0 Null-Wert Operator Eine Präsentation der IT-Designers Gruppe 35

Neu in C# 6.0 / Null-Wert Operator Wie kann folgendes vereinfacht werden? class Point public int X get; set; public int Y get; set; public static Point FromJson ( JObject obj) if ( obj!= null && obj["x"]!= null && obj["x"]. Type == JTokenType. Integer && obj["y"]!= null && obj["y"]. Type == JTokenType. Integer ) return new Point (( int)obj["x"], ( int)obj["y"]); C# 6.0 return null ; Der Elvis-Operator Eine Präsentation der IT-Designers Gruppe 36

Neu in C# 6.0 / Null-Wert Operator Wie kann folgendes vereinfacht werden??. Und weiter? class Point public int X get; set; public int Y get; set; public static Point FromJson ( JObject obj) if ( obj!= null && // obj ["x"]!= null && obj ["x"]. Type == JTokenType. Integer && // obj ["y"]!= null && obj ["y"]. Type == JTokenType. Integer ) obj["x"]?. Type == JTokenType. Integer && obj["y"]?. Type == JTokenType. Integer ) return new Point (( int)obj["x"], ( int)obj["y"]); C# 6.0 return null ; Der Elvis-Operator Eine Präsentation der IT-Designers Gruppe 36

Neu in C# 6.0 / Null-Wert Operator Wie kann folgendes vereinfacht werden??. Und weiter?? class Point public int X get; set; public int Y get; set; public static Point FromJson ( JObject obj) // if (obj!= null && // obj ["x "]?. Type == JTokenType. Integer && // obj ["y "]?. Type == JTokenType. Integer ) if ( obj?["x"]?. Type == JTokenType. Integer && obj?["y"]?. Type == JTokenType. Integer ) return new Point (( int)obj["x"], ( int)obj["y"]); C# 6.0 return null ; Der Elvis-Operator Eine Präsentation der IT-Designers Gruppe 36