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