1 / 29

C Sharp (C#)

C Sharp (C#). Martin Saternus Senior Student Partner Microsoft Deutschland GmbH i-martsa@microsoft.com. Agenda. Motivation für eine neue Sprache Konzepte der Sprache Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache. Motivation für eine neue Sprache.

tyronica
Télécharger la présentation

C Sharp (C#)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C Sharp (C#) Martin Saternus Senior Student Partner Microsoft Deutschland GmbH i-martsa@microsoft.com

  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 • Semantische Separation von Quellcode • Verhinderung von Namenskollisionen • Klassen • Container für Quellcode • Organisiert auf dem Heap • Structs • Container für Quellcode • 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 • Ö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 object Stream Hashtable int double MemoryStream FileStream • Alle Typen erben von System.Object • Implizite Konvertierung eines Typen in ein Objekt ist für jeden Typ möglich

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

  11. Simple Typen • Integer 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 • 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 Kompilierungszeitfestgelegt • 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 • Ä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!

More Related