Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

C Sharp (C#) Martin Saternus Senior Student Partner

Ähnliche Präsentationen


Präsentation zum Thema: "C Sharp (C#) Martin Saternus Senior Student Partner"—  Präsentation transkript:

1 C Sharp (C#) Martin Saternus Senior Student Partner
Microsoft Deutschland GmbH

2 Agenda Motivation für eine neue Sprache Konzepte der Sprache
Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

3 Motivation für eine neue Sprache
Komponentenorientierte, auf .NET Plattform zugeschnittene Sprache Unterstützung von Namespaces Native Unterstützung von Technologien der Basisklassenbibliothek Attributgetriebene deklarative Programmierung Saubere Definition der Sprache Erweiterung gegenüber bestehenden modernen Programmiersprachen

4 Agenda Motivation für eine neue Sprache Konzepte der Sprache
Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

5 Code Separation Namespaces Klassen Structs Interfaces
Semantische Separation von Quellcode Verhinderung von Namenskollisionen Klassen Container für Quellcode Organisiert auf dem Heap Structs Organisiert auf dem Stack Interfaces

6 Vererbung Einfachvererbung von Klassen
Implementierung von beliebig vielen Interfaces Implementierung von abstrakten Klassen und Methoden Syntaktische Hervorhebung beim Überschreiben (virtual, override) und Neudefinieren (new) von Methoden sealed Implementierung von nicht weitervererbbaren Klassen

7 Zugriffsrechte public protected private internal internal protected
Öffentlicher Zugriff protected Zugriff aus der vererbten Klasse private Zugriff nur innerhalb der Klasse internal Zugriff innerhalb einer Kompilierungseinheit internal protected Zugriff innerhalb einer Kompilierungseinheit oder aus der vererbten Klasse

8 Agenda Motivation für eine neue Sprache Konzepte der Sprache
Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

9 Einheitliches Typsystem
Alle Typen erben von System.Object Implizite Konvertierung eines Typen in ein Objekt ist für jeden Typ möglich Stream MemoryStream FileStream Hashtable double int object

10 Wert- und Referenztypen
Boxing Allokiert eine Box und kopiert den Wert hinein Unboxing Prüft den Typ der Box und kopiert Wert heraus int i = 123; object o = i; int j = (int)o; 123 i o System.Int32 j

11 Simple Typen Integer Type IEEE Floating Point Exact Numeric Type
byte, sbyte (8 bit), short, ushort (16 bit) int, uint (32 bit), long, ulong (64 bit) IEEE Floating Point float (precision of 7 digits) double (precision of 15–16 digits) Exact Numeric Type decimal (28 significant digits) Character Types char (single character) string (rich functionality, by-reference type) Boolean Type bool

12 Agenda Motivation für eine neue Sprache Konzepte der Sprache
Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

13 Namespaces Deklaration mit dem Schlüsselwort namespace
Referenzierung mit dem Schüsselwort using Keine Bindung an Dateisystem using <Namespace>; namespace <Namespace.Subnamespace> { }

14 Klassen Enthalten Felder, Properties, Indexer, Methoden, Delegaten, Events Abstrakte Klassen können abstrakte Methoden enthalten Erlauben Einfachvererbung Können von beliebig vielen Interfaces erben Unabhängig vom Dateinamen [Modifizierer] class <Klassenname> [: Basisklasse, Interfaces] { }

15 Structs Structs sind limitiert Nutzen Eingeschränkte OO Fähigkeiten
Werden „geboxt“ wenn sie zu Collections hinzugefügt werden Nutzen Interop Typen wie z.B. komplexe Zahlen Große Datenfelder [Modifizierer] struct <Name> { }

16 Interfaces Interfaces sind Typen, die
keine Implementierung enthalten (alle Methoden sind abstrakt) nicht instanziiert werden können öffentliche Elemente besitzen nur von anderen Interfaces erben können [Modifizierer] interface <Name> [: Interfaces] { }

17 Felder Klassenvariablen (in Java Attribute) werden in C# als Felder oder eng. Fields bezeichnet Felder müssen im Gegensatz zu lokalen Variablen keinen Wert zugewiesen bekommen Konstante Felder const – Wert wird zur Kompilierungszeit festgelegt readonly – Wert wird im Konstruktor festgelegt [Modifizierer] [const, readonly] <Typ> <Variable>; public readonly string Name;

18 Properties Komposition aus Feldern und Methoden
Schlüsselwort value enthält Wert bei Zuweisung Nutzen bei Schreib- oder lesegeschützten Feldern Validierungen bei Zuweisungen Berechnungen von Werten [Modifizierer] <Typ> <Name> { get { return <Variable>; } set { <Variable> = value; } }

19 Indexer Properties für Felder und Collections
Basierend auf der Property-Idee Konsistenter Weg zur Container-Erstellung [Modifizierer] <Typ> this[<Typ> <Name>] { get { return <Variable[Name]>; } set { <Variable[Name]> = value; } }

20 Methoden Methoden können überladen werden, müssen aber verschiedene Signaturen besitzen Überschreiben Deklaration als virtual in der Basisklasse Deklaration als override in der abgeleiteten Klasse Neudefinition mit Schlüssenwort new Variable Parameterlisten können mit dem Schlüsselwort params erzeugt werden [Modifizierer] <Typ> <Methodenname> ([<Typ> <Variable>, …]) { }

21 Delegates und Events Delegates Events
Ähnlich zu Funktionspointern in C und C++ Stark typisiert Events Werden über einen Eventhandler konsumiert [Modifizierer] <Typ> delegate <Name> ([<Typ> <Variable>, …]); [Modifizierer] event <Delegate> <EventName>; <Variable>.<EventName> += new <DelegateName>(<Funktionspointer);

22 Ausdrücke if (<boolscher Ausdruck) { … } {else { … } }
switch (<Variable>) { case: <Konstante> break; } While (<boolscher Ausdruck>) { … } do { … } while(<boolscher Ausdruck>) for (<Init>; <boolscher Ausdruck>; <Modi>) { … } foreach (<Typ> <Variable> in <ICollection impl. Typ) { … }

23 Agenda Motivation für eine neue Sprache Konzepte der Sprache
Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

24 Fehlerbehandlung Fehlerbehandlung durch Ausnahmen
Ausnahmen werden von System.Exception abgeleitet Abarbeitung von der speziellsten zur allgemeinsten Ausnahme try { } catch ([<Exception Typ> Variable]) [finally }]

25 Attribute Strukturierte Möglichkeit, Metadaten an Quellcode zu heften
Auswertung zur Laufzeit über Reflections Attribute sind Klassen Einheitliche Vorgehensweise erleichtert die Definition eigener Attribute Attribute können an Typen und Member „angehängt“ werden C# Syntax für Attribute Attribute werden einem Subjekt mit eckigen Klammern vorangestellt

26 Operatoren überladen Operatoren, die überladen werden können
Arithmetische Relationale Logische Operatoren, die nicht überladen werden können Spezielle Operatoren sizeof new is typeof

27 Überlauf-Überprüfung
Integer Arithmetiken C, C++ Überlauf checked vs. unchecked Standardmäßig unchecked, mit Ausnahme von Konstanten Änderung durch Compileranweisung “/checked” int i = checked (x * y); checked { int i = x * y; }

28 Arbeiten mit Pointern Schlüsselwort “ref , um Ein- und Ausgabe-Parameter zu übergeben Schlüsselwort “out”, um Ausgabe-Parameter zu übergeben Schlüsselwörter “ref/out” müssen in Methoden- und Aufrufsignaturen angegeben werden static void Swap(ref int a, ref int b) {...} static void Main() { int x = 1, y = 2; Swap(ref x, ref y); }

29 Fragen ??? Weiter geht’s am Ask The Expert Stand!


Herunterladen ppt "C Sharp (C#) Martin Saternus Senior Student Partner"

Ähnliche Präsentationen


Google-Anzeigen