Einführung in C#




Präsentation von:
Georg Hinkel
Microsoft Student Partner
KIT Karlsruhe
Georg.hinkel@studentpartners.de
2




                         Agenda
• .NET Architektur, Terminologie
• Syntax C#
  – Kontrollstrukturen, Namenskonventionen
  – Properties
  – Delegates, Events
• Werttypen vs. Referenztypen


                Einführung in .NET und C# - Georg Hinkel
Grober Aufbau der Plattform und Klärung der Begriffe
Architektur & Terminologie
4




                          Architektur
                                Programmiersprache (Standard: Common Language
                                Specification, CLS), e.g. C#, Visual Basic


                                IL-Code (Früher Microsoft Intermediate Language)
                                Heute meist nur Intermediate Language (IL)


                                Virtuelle Maschine, die den IL-Code ausführt
                                Standardimplementierung:
                                Common Language Runtime (CLR)
Bildquelle: Wikipedia




                        Einführung in .NET und C# - Georg Hinkel
5




   Common Language Specification
• Definiert den gemeinsamen Nenner aller .NET-
  Sprachen
  – Einfachvererbung (Mehrfachvererbung nicht erlaubt)
  – Common Type System
     • Definiert Basisdatentypen
        – Int32 ist 32 bit lang, Int64 64 bit lang
        – Zeichenketten codiert in Unicode 16 „Little Endian“
  – Properties, Delegates, Events, u.a. (kommt später)

                     Einführung in .NET und C# - Georg Hinkel
6




         Intermediate Language
• Stackbasierter Bytecode
• Aus den fertigen Kompilaten direkt ablesbar
  – Mit Spezialprogrammen (.NET Reflector) Quellcode
    rekonstruierbar
  – Techniken um Rekonstruktion des Quellcodes zu
    verhindern notwendig



                 Einführung in .NET und C# - Georg Hinkel
7




  Common Language Runtime (CLR)
• Virtuelle Maschine mit Laufzeitumgebung
  – Dadurch plattformunabhängig
  – CLR nur für Windows erhältlich
  – Mono Projekt: CLR für Linux




                 Einführung in .NET und C# - Georg Hinkel
8




       Auswahl der .NET-Sprachen
• C#, Visual Basic, Managed C++, F#
   – Offiziell von Microsoft unterstützt
• Cω, Asml, Spec#, Polyphonic C#
   – Forschungssprachen von Microsoft Research
• GrGen.NET
   – Programmierung mit Graphen
• Boo, J#, Jscript.NET, Clarion.NET u.v.m



                    Einführung in .NET und C# - Georg Hinkel
9




       Auswahl der .NET-Sprachen
• C#, Visual Basic, Managed C++, F#
   – Offiziell von Microsoft unterstützt
• Cω, Asml, Spec#, Polyphonic C#
   – Forschungssprachen von Microsoft Research
• GrGen.NET
   – Programmierung mit Graphen
• Boo, J#, Jscript.NET, Clarion.NET u.v.m

• …etwa 10-20 weitere
                    Einführung in .NET und C# - Georg Hinkel
10




       Auswahl der .NET-Sprachen
• C#, Visual Basic, Managed C++, F#
   – Offiziell von Microsoft unterstützt
• Cω, Asml, Spec#, Polyphonic C# matter“
       „The language doesn‘t
   – Forschungssprachen von Microsoft Research
                      Dan Appleman

• GrGen.NET
   – Entwickelt am IPD/Uni Karlsruhe
• Boo, J#, Jscript.NET, Clarion.NET u.v.m

• …etwa 10-20 weitere
                    Einführung in .NET und C# - Georg Hinkel
11




           Zusammenfassung
• Grobe Architektur ähnlich
  Java
• Sprachvielfalt




               Einführung in .NET und C# - Georg Hinkel
Syntax, Properties, Delegates, Generics, ValueTypes, Structs
Syntax C#
13




                          Klassen
• Hier kein Grundkurs der Objektorientierung
  (Zeit!)
• Literatur: Galileo Openbook
  – http://openbook.galileocomputing.de/visual_csharp
    _2010/
  – http://openbook.galileocomputing.de/oop/



                 Einführung in .NET und C# - Georg Hinkel
14




Klassen – Syntax in C#
/// <summary>
/// Nur zu Demonstrationszwecken
/// </summary>
public class A : B, ICalculator
{
  public int Calc()
  {
      if (this.Id < 2)
      {
             return 0;
      }
      return 1;
  }
}
      Einführung in .NET und C# - Georg Hinkel
15




             Klassen – Syntax in C#
                                              Basisklasse        Schnittstelle
                 /// <summary>
Klassenname      /// Nur zu Demonstrationszwecken
                 /// </summary>
                 public class A : B, ICalculator
                 {
                    public int Calc()
                    {
                        if (this.Id < 2)
                        {
 Methodendefinition           return 0;
                        }                       Property
                        return 1;
                    }
                 }

                      Einführung in .NET und C# - Georg Hinkel
16




              Kontrollstrukturen
• Bedingte einfache Sprünge
  – if-Anweisung
• Schleifen
  – do/while-Schleifen
  – for-Schleifen
• Iterierte Schleifen mit foreach
• LINQ
                   Einführung in .NET und C# - Georg Hinkel
17




             Namenskonventionen
         Subjekt                             .NET
         Namensraum                          Pascal Case
         Klassennamen                        Pascal Case
         Methodennamen                       Pascal Case
         Klassenvariablen                    Camel Case
         Properties, Events                  Pascal Case
         Lokale Variablen                    Camel Case
         Schnittstellen                      Beginnen mit I
• Pascal Case: Alle Worte groß geschrieben, ohne Leerzeichen
• Camel Case: Wie Pascal Case, jedoch erster Buchstabe des ersten Wortes
auch klein


                          Einführung in .NET und C# - Georg Hinkel
18




                         Nomenklautur
Objektorientierung allgemein                     .NET
Klasse                                           Klasse
-                                                Struktur/Struct
-                                                Delegate
-                                                Event/Ereignis
Attribut                                         Klassenvariable/Feld
Feld                                             Array
- (Annotation in Java)                           Attribut
-                                                Property
Methode                                          Methode
Funktion                                         Funktion



                         Einführung in .NET und C# - Georg Hinkel
19




                          Properties
• „Eigenschaften“ eines Objekts
   – Getter/Setter-Paar
   – Automatisiert möglich
• Bestandteil der CLS
• Ähnlich Java „Beans-Architektur“
  private string name;
  public string Name
  {
            get { return name; }
            set { name = value; }
  }
  Alternative Schreibweise (automatisiert):
  public string Name { get; set; }

                      Einführung in .NET und C# - Georg Hinkel
20




           Properties - Vorteile
• Problem: Wieviel Berechnungsaufwand steckt
  hinter der Auswertung einer parameterlosen
  Funktion?
• Semantischer Unterschied
  – Funktionen, die „nur“ Klassenvariablen zurückgeben
  – Funktionen, die „hohen“ Berechnungsaufwand für
    die Auswertung benötigen

                 Einführung in .NET und C# - Georg Hinkel
21




            Properties - Vorteile
• Problem: Wieviel Berechnungsaufwand steckt hinter
  der Auswertung einer parameterlosen Funktion?
• Semantischer Unterschied
  – Funktionen, die „nur“ Klassenvariablen zurückgeben
  – Funktionen, die „hohen“ Berechnungsaufwand für die
    Auswertung benötigen


• Mit Properties: Syntaktischer Unterschied
                  Einführung in .NET und C# - Georg Hinkel
22




                      Delegates
• Ähnlich Funktionszeigern in C, nur mit Objekt
• Ein Delegate ist eine Klasse, also ein Datentyp

   public delegate void Foovoid()


• Verketten und Herauslösen möglich (e.g.
  Methode Delegate.Combine)
• Bestandteil der CLS

                 Einführung in .NET und C# - Georg Hinkel
23




                           Events
• Ähnlich Klassenvariable, aber es sind nach außen
  nur die Operationen Verketten und Herauslösen
  möglich public event Foovoid FooHappened;
• Bestandteil der CLS
• Faktisch in der Sprache implementiertes
  Observer-Pattern („Beobachtermuster“)


                Einführung in .NET und C# - Georg Hinkel
24




       Events – Konventionen (1)
• Objektorientierter Ansatz
  – Parameter/Rückgabe als Event-Objekt
  – Events nur Void-Delegates (ohne Rückgabe)
• Sender wird übergeben
  – Wiederverwendbarkeit der Handler-Methoden




                 Einführung in .NET und C# - Georg Hinkel
25




        Events – Konventionen (2)
• Standarddelegates für Events:
  – Mit Parametern/Rückgabe
     public delegate void EventHandler<T as EventArgs>(object sender, T event)

     public event EventHandler<ResolveEntityEventArgs> ResolveEntityRequired;

     Manchmal noch alter Code ohne Generizität
  – Ohne Parameter
     public delegate void EventHandler(object sender, EventArgs event)

     public event EventHandler PropertyChanged;

                        Einführung in .NET und C# - Georg Hinkel
26




         Events - Anwendungen
• Oberflächen
  – Windows Forms Button: 72 Events
  – WPF Button: 95 Events
• MVC/MVP/MVVM
  – Saubere Implementierung des Observer-Patterns




                Einführung in .NET und C# - Georg Hinkel
27




              Best Practise (1)
• Properties + Observer
 private string _name;

 public string Name {
        get {
              return _name;
        }
        set {
              if (_name != value) {
                     _name = value;
                     OnNameChanged(EventArgs.Empty);
              }
        }
 }


                 Einführung in .NET und C# - Georg Hinkel
28




              Best Practise (2)
• Properties + Observer
 protected virtual void OnNameChanged(EventArgs e)
 {
        EventHandler handler = NameChanged;
        if (handler != null)
        {
               handler.Invoke(this, e);
        }
 }

 public event EventHandler NameChanged;




                 Einführung in .NET und C# - Georg Hinkel
29




              Best Practise (2)
• Properties + Observer
 protected virtual void OnNameChanged(EventArgs e)
 {
        EventHandler handler = NameChanged;
        if (handler != null)
        {
               handler(this, e);
        }
 }

 public event EventHandler NameChanged;




                 Einführung in .NET und C# - Georg Hinkel
Werttypen, Referenztypen
31




       Werttypen, Referenztypen
• Java: int, double, … primitive Typen
  – Keine Objekte
  – Verstoß gegen Objektorientierung!
• .NET: Trennung Werttypen vs. Referenztypen
  – Vollständig objektorientiert
  – Automatisches Boxing/Unboxing


                 Einführung in .NET und C# - Georg Hinkel
32




               Referenztypen
• Zugriff nur über Referenz
• Eigentliches Objekt im Heap gespeichert
• Variablen sind nur Zeiger
 „normale Objekte“




                Einführung in .NET und C# - Georg Hinkel
33




                Werttypen (1)
• Overhead für kleine Objekte zu hoch
• Speicherung der Objekte „vor Ort“ im Stack
  – Boxing/Unboxing
  – Kein Zusätzlicher Speicherplatz notwendig (meist)
  – Werttypen sind immutable (unveränderlich)
  – Vererbung nicht möglich


                 Einführung in .NET und C# - Georg Hinkel
34




                  Werttypen (2)
• Definition eigener Werttypen möglich
  – Enumerationen: Definition mehrerer thematisch
    ähnlicher numerischer Konstanten
  – Structure: Wie Klassen, aber ohne Polymorphie
     • Structure erbt automatisch von ValueType
     • Implementierung von Schnittstellen trotzdem möglich
     • GetHashCode sollte überschrieben werden



                   Einführung in .NET und C# - Georg Hinkel
35




           Werttypen - Beispiel
• Structure Point (System.Drawing.Point)

   Point p = window.Location;
   p.X += 20;




  Was passiert? Was wäre, wenn Point eine
  Referenzklasse wäre (Reference Type)?


                 Einführung in .NET und C# - Georg Hinkel
36




           Werttypen - Beispiel
• Structure Point (System.Drawing.Point)

   Point p = window.Location;
   p.X += 20;
   window.Location = p;




  Was passiert? Was wäre, wenn Point eine
  Referenzklasse wäre (Reference Type)?


                 Einführung in .NET und C# - Georg Hinkel
37




Enumerationen – Syntax in C#
  /// <summary>
  /// Defines the gender of a patient
  /// </summary>
  public enum Gender
  {
      Male,
      Female,
      Unknown
  }




               Einführung in .NET und C# - Georg Hinkel
38




Enumerationen – Syntax in C#
  /// <summary>
  /// Defines the gender of a patient
  /// </summary>
  public enum Gender : byte
  {
      Male ,
      Female,
      Unknown
  }




               Einführung in .NET und C# - Georg Hinkel
39




Enumerationen – Syntax in C#
  /// <summary>
  /// Defines the gender of a patient
  /// </summary>
  [Flagged]
  public enum Gender : byte
  {
      Male = 2,
      Female = 4,
      Unknown = 1
  }



               Einführung in .NET und C# - Georg Hinkel
Lemming-Ameisen


Demo
Vielen Dank für eure Aufmerksamkeit!




 Präsentation von:
 Georg Hinkel
 Microsoft Student Partner
 KIT Karlsruhe
 georg.hinkel@studentpartners.de
42


             IT 4 Students
Der Newsletter rund um Microsoft Angebote für Studierende


Online:
www.microsoft.de/dreamspark




                    Einführung in .NET und C# - Georg Hinkel
43




/TechStudent                      Online
                                      Facebook
– das Portal für Geeks, Nerds und                www.facebook.com/
alle, die es noch werden wollen                  techstudentgermany
www.microsoft.de/techstuden
  t




                       Einführung in .NET und C# - Georg Hinkel
44



                    MSDN AA
MSDN AA = Microsoft Developer Network – Academic Alliance

Entwicklungsumgebungen, Datenbanken, Betriebssysteme
wie … Windows 7, Visio, Project, Visual Studio

Ausstattung der angebotenen Software für alle
  immatrikulierten Studierenden und die
  Lehreinrichtung

Online: www.msdnaa.de



                    Einführung in .NET und C# - Georg Hinkel
45


               DreamSpark
Kostenloser Softwaredownload für alle Studierenden

SDK, Visual Studio, Virtual PC, SQL Server und Co.


Online:
www.microsoft.de/dreamspark




                    Einführung in .NET und C# - Georg Hinkel

Einführung in .NET mit C#

  • 1.
    Einführung in C# Präsentationvon: Georg Hinkel Microsoft Student Partner KIT Karlsruhe Georg.hinkel@studentpartners.de
  • 2.
    2 Agenda • .NET Architektur, Terminologie • Syntax C# – Kontrollstrukturen, Namenskonventionen – Properties – Delegates, Events • Werttypen vs. Referenztypen Einführung in .NET und C# - Georg Hinkel
  • 3.
    Grober Aufbau derPlattform und Klärung der Begriffe Architektur & Terminologie
  • 4.
    4 Architektur Programmiersprache (Standard: Common Language Specification, CLS), e.g. C#, Visual Basic IL-Code (Früher Microsoft Intermediate Language) Heute meist nur Intermediate Language (IL) Virtuelle Maschine, die den IL-Code ausführt Standardimplementierung: Common Language Runtime (CLR) Bildquelle: Wikipedia Einführung in .NET und C# - Georg Hinkel
  • 5.
    5 Common Language Specification • Definiert den gemeinsamen Nenner aller .NET- Sprachen – Einfachvererbung (Mehrfachvererbung nicht erlaubt) – Common Type System • Definiert Basisdatentypen – Int32 ist 32 bit lang, Int64 64 bit lang – Zeichenketten codiert in Unicode 16 „Little Endian“ – Properties, Delegates, Events, u.a. (kommt später) Einführung in .NET und C# - Georg Hinkel
  • 6.
    6 Intermediate Language • Stackbasierter Bytecode • Aus den fertigen Kompilaten direkt ablesbar – Mit Spezialprogrammen (.NET Reflector) Quellcode rekonstruierbar – Techniken um Rekonstruktion des Quellcodes zu verhindern notwendig Einführung in .NET und C# - Georg Hinkel
  • 7.
    7 CommonLanguage Runtime (CLR) • Virtuelle Maschine mit Laufzeitumgebung – Dadurch plattformunabhängig – CLR nur für Windows erhältlich – Mono Projekt: CLR für Linux Einführung in .NET und C# - Georg Hinkel
  • 8.
    8 Auswahl der .NET-Sprachen • C#, Visual Basic, Managed C++, F# – Offiziell von Microsoft unterstützt • Cω, Asml, Spec#, Polyphonic C# – Forschungssprachen von Microsoft Research • GrGen.NET – Programmierung mit Graphen • Boo, J#, Jscript.NET, Clarion.NET u.v.m Einführung in .NET und C# - Georg Hinkel
  • 9.
    9 Auswahl der .NET-Sprachen • C#, Visual Basic, Managed C++, F# – Offiziell von Microsoft unterstützt • Cω, Asml, Spec#, Polyphonic C# – Forschungssprachen von Microsoft Research • GrGen.NET – Programmierung mit Graphen • Boo, J#, Jscript.NET, Clarion.NET u.v.m • …etwa 10-20 weitere Einführung in .NET und C# - Georg Hinkel
  • 10.
    10 Auswahl der .NET-Sprachen • C#, Visual Basic, Managed C++, F# – Offiziell von Microsoft unterstützt • Cω, Asml, Spec#, Polyphonic C# matter“ „The language doesn‘t – Forschungssprachen von Microsoft Research Dan Appleman • GrGen.NET – Entwickelt am IPD/Uni Karlsruhe • Boo, J#, Jscript.NET, Clarion.NET u.v.m • …etwa 10-20 weitere Einführung in .NET und C# - Georg Hinkel
  • 11.
    11 Zusammenfassung • Grobe Architektur ähnlich Java • Sprachvielfalt Einführung in .NET und C# - Georg Hinkel
  • 12.
    Syntax, Properties, Delegates,Generics, ValueTypes, Structs Syntax C#
  • 13.
    13 Klassen • Hier kein Grundkurs der Objektorientierung (Zeit!) • Literatur: Galileo Openbook – http://openbook.galileocomputing.de/visual_csharp _2010/ – http://openbook.galileocomputing.de/oop/ Einführung in .NET und C# - Georg Hinkel
  • 14.
    14 Klassen – Syntaxin C# /// <summary> /// Nur zu Demonstrationszwecken /// </summary> public class A : B, ICalculator { public int Calc() { if (this.Id < 2) { return 0; } return 1; } } Einführung in .NET und C# - Georg Hinkel
  • 15.
    15 Klassen – Syntax in C# Basisklasse Schnittstelle /// <summary> Klassenname /// Nur zu Demonstrationszwecken /// </summary> public class A : B, ICalculator { public int Calc() { if (this.Id < 2) { Methodendefinition return 0; } Property return 1; } } Einführung in .NET und C# - Georg Hinkel
  • 16.
    16 Kontrollstrukturen • Bedingte einfache Sprünge – if-Anweisung • Schleifen – do/while-Schleifen – for-Schleifen • Iterierte Schleifen mit foreach • LINQ Einführung in .NET und C# - Georg Hinkel
  • 17.
    17 Namenskonventionen Subjekt .NET Namensraum Pascal Case Klassennamen Pascal Case Methodennamen Pascal Case Klassenvariablen Camel Case Properties, Events Pascal Case Lokale Variablen Camel Case Schnittstellen Beginnen mit I • Pascal Case: Alle Worte groß geschrieben, ohne Leerzeichen • Camel Case: Wie Pascal Case, jedoch erster Buchstabe des ersten Wortes auch klein Einführung in .NET und C# - Georg Hinkel
  • 18.
    18 Nomenklautur Objektorientierung allgemein .NET Klasse Klasse - Struktur/Struct - Delegate - Event/Ereignis Attribut Klassenvariable/Feld Feld Array - (Annotation in Java) Attribut - Property Methode Methode Funktion Funktion Einführung in .NET und C# - Georg Hinkel
  • 19.
    19 Properties • „Eigenschaften“ eines Objekts – Getter/Setter-Paar – Automatisiert möglich • Bestandteil der CLS • Ähnlich Java „Beans-Architektur“ private string name; public string Name { get { return name; } set { name = value; } } Alternative Schreibweise (automatisiert): public string Name { get; set; } Einführung in .NET und C# - Georg Hinkel
  • 20.
    20 Properties - Vorteile • Problem: Wieviel Berechnungsaufwand steckt hinter der Auswertung einer parameterlosen Funktion? • Semantischer Unterschied – Funktionen, die „nur“ Klassenvariablen zurückgeben – Funktionen, die „hohen“ Berechnungsaufwand für die Auswertung benötigen Einführung in .NET und C# - Georg Hinkel
  • 21.
    21 Properties - Vorteile • Problem: Wieviel Berechnungsaufwand steckt hinter der Auswertung einer parameterlosen Funktion? • Semantischer Unterschied – Funktionen, die „nur“ Klassenvariablen zurückgeben – Funktionen, die „hohen“ Berechnungsaufwand für die Auswertung benötigen • Mit Properties: Syntaktischer Unterschied Einführung in .NET und C# - Georg Hinkel
  • 22.
    22 Delegates • Ähnlich Funktionszeigern in C, nur mit Objekt • Ein Delegate ist eine Klasse, also ein Datentyp public delegate void Foovoid() • Verketten und Herauslösen möglich (e.g. Methode Delegate.Combine) • Bestandteil der CLS Einführung in .NET und C# - Georg Hinkel
  • 23.
    23 Events • Ähnlich Klassenvariable, aber es sind nach außen nur die Operationen Verketten und Herauslösen möglich public event Foovoid FooHappened; • Bestandteil der CLS • Faktisch in der Sprache implementiertes Observer-Pattern („Beobachtermuster“) Einführung in .NET und C# - Georg Hinkel
  • 24.
    24 Events – Konventionen (1) • Objektorientierter Ansatz – Parameter/Rückgabe als Event-Objekt – Events nur Void-Delegates (ohne Rückgabe) • Sender wird übergeben – Wiederverwendbarkeit der Handler-Methoden Einführung in .NET und C# - Georg Hinkel
  • 25.
    25 Events – Konventionen (2) • Standarddelegates für Events: – Mit Parametern/Rückgabe public delegate void EventHandler<T as EventArgs>(object sender, T event) public event EventHandler<ResolveEntityEventArgs> ResolveEntityRequired; Manchmal noch alter Code ohne Generizität – Ohne Parameter public delegate void EventHandler(object sender, EventArgs event) public event EventHandler PropertyChanged; Einführung in .NET und C# - Georg Hinkel
  • 26.
    26 Events - Anwendungen • Oberflächen – Windows Forms Button: 72 Events – WPF Button: 95 Events • MVC/MVP/MVVM – Saubere Implementierung des Observer-Patterns Einführung in .NET und C# - Georg Hinkel
  • 27.
    27 Best Practise (1) • Properties + Observer private string _name; public string Name { get { return _name; } set { if (_name != value) { _name = value; OnNameChanged(EventArgs.Empty); } } } Einführung in .NET und C# - Georg Hinkel
  • 28.
    28 Best Practise (2) • Properties + Observer protected virtual void OnNameChanged(EventArgs e) { EventHandler handler = NameChanged; if (handler != null) { handler.Invoke(this, e); } } public event EventHandler NameChanged; Einführung in .NET und C# - Georg Hinkel
  • 29.
    29 Best Practise (2) • Properties + Observer protected virtual void OnNameChanged(EventArgs e) { EventHandler handler = NameChanged; if (handler != null) { handler(this, e); } } public event EventHandler NameChanged; Einführung in .NET und C# - Georg Hinkel
  • 30.
  • 31.
    31 Werttypen, Referenztypen • Java: int, double, … primitive Typen – Keine Objekte – Verstoß gegen Objektorientierung! • .NET: Trennung Werttypen vs. Referenztypen – Vollständig objektorientiert – Automatisches Boxing/Unboxing Einführung in .NET und C# - Georg Hinkel
  • 32.
    32 Referenztypen • Zugriff nur über Referenz • Eigentliches Objekt im Heap gespeichert • Variablen sind nur Zeiger  „normale Objekte“ Einführung in .NET und C# - Georg Hinkel
  • 33.
    33 Werttypen (1) • Overhead für kleine Objekte zu hoch • Speicherung der Objekte „vor Ort“ im Stack – Boxing/Unboxing – Kein Zusätzlicher Speicherplatz notwendig (meist) – Werttypen sind immutable (unveränderlich) – Vererbung nicht möglich Einführung in .NET und C# - Georg Hinkel
  • 34.
    34 Werttypen (2) • Definition eigener Werttypen möglich – Enumerationen: Definition mehrerer thematisch ähnlicher numerischer Konstanten – Structure: Wie Klassen, aber ohne Polymorphie • Structure erbt automatisch von ValueType • Implementierung von Schnittstellen trotzdem möglich • GetHashCode sollte überschrieben werden Einführung in .NET und C# - Georg Hinkel
  • 35.
    35 Werttypen - Beispiel • Structure Point (System.Drawing.Point) Point p = window.Location; p.X += 20; Was passiert? Was wäre, wenn Point eine Referenzklasse wäre (Reference Type)? Einführung in .NET und C# - Georg Hinkel
  • 36.
    36 Werttypen - Beispiel • Structure Point (System.Drawing.Point) Point p = window.Location; p.X += 20; window.Location = p; Was passiert? Was wäre, wenn Point eine Referenzklasse wäre (Reference Type)? Einführung in .NET und C# - Georg Hinkel
  • 37.
    37 Enumerationen – Syntaxin C# /// <summary> /// Defines the gender of a patient /// </summary> public enum Gender { Male, Female, Unknown } Einführung in .NET und C# - Georg Hinkel
  • 38.
    38 Enumerationen – Syntaxin C# /// <summary> /// Defines the gender of a patient /// </summary> public enum Gender : byte { Male , Female, Unknown } Einführung in .NET und C# - Georg Hinkel
  • 39.
    39 Enumerationen – Syntaxin C# /// <summary> /// Defines the gender of a patient /// </summary> [Flagged] public enum Gender : byte { Male = 2, Female = 4, Unknown = 1 } Einführung in .NET und C# - Georg Hinkel
  • 40.
  • 41.
    Vielen Dank füreure Aufmerksamkeit! Präsentation von: Georg Hinkel Microsoft Student Partner KIT Karlsruhe georg.hinkel@studentpartners.de
  • 42.
    42 IT 4 Students Der Newsletter rund um Microsoft Angebote für Studierende Online: www.microsoft.de/dreamspark Einführung in .NET und C# - Georg Hinkel
  • 43.
    43 /TechStudent Online Facebook – das Portal für Geeks, Nerds und www.facebook.com/ alle, die es noch werden wollen techstudentgermany www.microsoft.de/techstuden t Einführung in .NET und C# - Georg Hinkel
  • 44.
    44 MSDN AA MSDN AA = Microsoft Developer Network – Academic Alliance Entwicklungsumgebungen, Datenbanken, Betriebssysteme wie … Windows 7, Visio, Project, Visual Studio Ausstattung der angebotenen Software für alle immatrikulierten Studierenden und die Lehreinrichtung Online: www.msdnaa.de Einführung in .NET und C# - Georg Hinkel
  • 45.
    45 DreamSpark Kostenloser Softwaredownload für alle Studierenden SDK, Visual Studio, Virtual PC, SQL Server und Co. Online: www.microsoft.de/dreamspark Einführung in .NET und C# - Georg Hinkel