c sharp c l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
C Sharp (C#) PowerPoint Presentation
Download Presentation
C Sharp (C#)

Loading in 2 Seconds...

play fullscreen
1 / 29
tyronica

C Sharp (C#) - PowerPoint PPT Presentation

100 Views
Download Presentation
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. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - - 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!