1. Generics (C++: Templates)
    1. Eine Klasse (generische Klasse) oder statische Methode verwendet einen noch nicht bekannten Datentyp
    2. generische Delegates
      1. public delegate void MyDelegate<T>(T obj); MyDelegate<int> del = new MyDelegate<int>(MyEventHandler);
    3. generische statische Methoden
      1. class GenericClass<T> { public static void GenericMethod<K>(T obj1, K obj2) {...} }
    4. generische Klassen
      1. Definition
        1. class Stack<T>
        2. public T Pop() {}
        3. Standardwert zurückgeben: default (t)
      2. Ableitung
        1. ist möglich
        2. where T: Class1 = Ableitung unter gewissen Bedingungen
  2. Datentypen
    1. object
      1. Typloser Pointer (= 1. Basisklasse)
      2. C++: void *
    2. byte
    3. short
      1. 16 Bit
    4. int
      1. 32 Bit
    5. long
      1. 64 Bit
    6. float
      1. bei Definition: Suffix F - keine Verwechslung mit double
    7. double
    8. char
      1. 16 Bit = Unicode
    9. bool
  3. Konvertierung
    1. Klasse "Convert"
      1. bei Konvertierfehler: Exception
    2. explizite Konvertierung
      1. Wie bei C++: (Type) Variable
    3. Überlauf
      1. Automatische Überprüfung Projekteinstellung: Erstellen->Eweitert->Auf arithmetische ...
        1. unchecked
          1. Syntax: unchecked { "konvertierung" }
          2. Unterbindet Überlaufüberprüfung
      2. checked
        1. Syntax: checked { "konvertierung" }
        2. Liefert Exception bei Überlauf
    4. as
      1. Konverter für Referenztypen
      2. liefert null bei Konvertierungsfehler
  4. if / switch
    1. if
      1. Wie in C++: auch Kurzform ?: erlaubt
    2. switch case
      1. Gleiche Fähigkeiten wie C++: auch default
      2. goto case
        1. Zu einer bestimmten Bedinungen springen
        2. Syntax: goto case 1;
  5. arrays
    1. Syntax: Type [] Variablenname
    2. Array in Array möglich
  6. foreach
    1. Schleife basierend auf IEnumerable
    2. Hauptsächliche Anwendung: iterieren eines Arrays
    3. Syntax: foreach (Type Variablenname in Variable) {}
    4. Bsp: foreach (int Zahl in Array) {}
  7. Klassen (class)
    1. Konstruktor
      1. Zugriffmodifizierer
        1. private
          1. Keine Instanz erlaubt
        2. internal
          1. Fremde Anwendungen: keine Instanz
      2. Aufruf
        1. Bsp: Klasse1 i= new Klasse1 () {Zahl= 10}
        2. Instantiierung mit new
        3. kann beim Aufruf direkt auf Eigenschaften zugreifen mit {}
      3. this ()
        1. Aufruf des eigenen Konstruktors
    2. Destruktor
      1. Syntax: ~Klassenbezeichner() {/*...*/}
      2. GC (Garbage Collector)
        1. Ruft Destruktor auf
        2. Refernz= null -> wenn aktiv Speicherfreigabe
        3. GC.Collect();
          1. zwingt zum Speicherfreigeben
          2. Performance -- !
        4. Nur im Anwendungsleerlauf aktiv
      3. gezieltes Freigeben: IDispose
    3. Eigenschaftsmethode (Properties)
      1. set
        1. wird beim Setzen der Eigenschaft aufgerufen
        2. Bsp: public int Prop { set { cProp= value;}}
        3. value: gesetzter Wert
      2. VCL C++: __propertry
      3. get
        1. wird bei der Abfrage der Eigenschaft aufgerufen
        2. Bsp: public int Prop { get { return 1;}}
      4. get; set;
        1. = automatische Accessoren = nur sinnvoll mit Zugriffsmodifizier (private)
      5. Accessoren
    4. readonly / const
      1. const: nur für Wertetypen (int, double, usw)
      2. Unterschied readonly, const: readonly kann - Konstruktor gesetzt werden -> Refernztypen möglich
    5. Zugriffsmodifizierer
      1. public
      2. internal (standard)
      3. sealed
        1. Darf nicht weitervererbt werden
    6. Vererbung
      1. base
        1. Zugriff auf Basisklasse
    7. Indexer
      1. Implementierung des []-Operators
      2. public int this [int index] { set {} get {}}
  8. Methoden
    1. Zugriffsmodifizierer
      1. public
      2. private (Standard)
      3. proteced
      4. internal
        1. Methode verfügbar nur - Klassen - selben Anwendung
    2. ref / out
      1. Zur Verwendung von Refernz Parametern
      2. ref
        1. C++: &
        2. Übergebene Referenz muss initialisiert sein
        3. ref wird im Funktionsrumpf, als auch beim Aufruft angegeben
      3. out
        1. wie ref außer
          1. Refernz muss nicht initialisiert sein
          2. Referenz muss in der Funktion gesetzt werden
    3. Parameter
      1. dynamische Parameterliste (params)
        1. public long Methode(int value1, params int[] liste)
        2. Nur am Ende der Parameterliste gültig
        3. Unterschiede Arrays: optionale Angabe
      2. 4.0: Vordefinitionen Möglich. Bsp: public void Met (int zahl= 10)
  9. Schlüsselwörter
    1. is
      1. Typvergleich - true wenn gleich
      2. Bsp. if(Klasse1 is Class1)
    2. as
    3. ref/out
    4. sealed
    5. partial
      1. Syntax: public partial class Klasse {}
      2. Klassen/Interface/Struct
        1. Code in mehreren Dateien verstreut - Deklaration in allen Dateien gleich
        2. Bsp: public partial class Klasse {}
      3. Methoden
        1. Dient zur Deklaration einer Methode; die Implementierung (Definiton) - andere Datei
    6. static
      1. Klassen
        1. Klassen die nur statische Mitglieder haben
      2. Methoden/Variablen
        1. Methoden und Variablen die auch ohne Klasseninstanz verfügbar sind
        2. Bsp. public static Methode ()
      3. Konstruktoren
        1. Dient zur initialisierung statischer Variablen
        2. wird vor Zugriff auf statische Klassenelemente aufgerufen
    7. internal
    8. dafault
      1. switch case
      2. Generics
    9. delegate
    10. using
      1. Einbindung eines Namespaces
      2. Zusatzbezeichnung für bestehenden Namespace
        1. Bsp: using Hallo= System.Console;
    11. unsafe
      1. Erlaubt die verwendung von Pointer um gewisse C-Routinen verwenden zu können
  10. Delegates (C++: Funktionszeiger)
    1. Die Grundlage für Events
    2. Multicast Delegates
      1. Der Aufruf einer Methode bewirkt den Aufruf mehrerer anderer Methoden
    3. Syntax: public delegate Typ Proc (Var1, Var2) Proc pr; pr= new Proc ( Methode) oder pr= Methode public Typ Methode (Var1, Var2)
    4. Annonyme Methode
      1. Eine Methode ohne Namen
      2. Bsp: pr= delegate (Var1, Var2) {}
    5. Events
      1. Mittels eines deklarierten Delegates kann ein Event erstellt werden
      2. Bsp: public event pr OnKlick;
  11. Attributes
    1. Ermöglich Klassen, Funktion, usw. mit Zusatzinformationen zu versehen
    2. Werden für Assembly Metadaten verwendet
    3. Werden zum importieren von Dll Funktionen verwendet
    4. Können selbst definiert werden - Klasse Attributes entscheidend
    5. Durch []-Operator erkennbar