11.07.2015 Aufrufe

2 Grundlagen Persistenzframeworks

2 Grundlagen Persistenzframeworks

2 Grundlagen Persistenzframeworks

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Kapitel 3: LINQDas Beispiel stattet den primitiven Datentyp int mit der Methode add aus, die sich wiefolgt verwenden lässt:int c=20; c.add(22); //c == 42Erweiterungsmethoden, die den erweiterten Typen über ihren ersten Parameterannehmen, was durch das Schlüsselwort this gekennzeichnet wird, haben in einerstatischen Klasse deklariert zu werden und sind selbst ebenfalls static. Implizittypisierte Variablen stehen dem Entwickler nur innerhalb eines Methodenkörpers zurVerfügung.var fourtytwo = 42;Über das Schlüsselwort var wird eine derartige Variable deklariert, wobei dies nur beiunmittelbarer Initialisierung anwendbar ist und der Typ der Variable durch denInitialisierungswert bestimmt wird. Anders als beim variant-Typ in Visual Basic isteine derartige Variable streng typisiert, was auch durch Visual Studio und den Compilergewährleistet und geprüft wird. Anonyme Typen kombinieren implizit typisierteVariablen mit Objektinitialisierern und ermöglichen es, innerhalb einer Methodekomplexe Objektinstanzen zu verwenden, ohne dass dafür eine Klasse zu erstellen ist:var blauesAuto = new {Marke="BMW", hatWinterreifen=true};var grauesAuto = new {Marke="Audi", hatWinterreifen=false};var rotesMoped = new {Marke="Puch"};Für die Objekte blauesAuto und grauesAuto wird implizit durch den Compiler eineKlasse mit den Attributen string Marke und bool hatWinterreifen erstellt undverwendet. Dabei richtet sich der Compiler nach den hier stets implizit typisiertenObjektinitialisierer-Parametern und auch deren Reihenfolge. Für das ObjektrotesMoped wird insofern ein anderer anonymer Typ angelegt und verwendet.Zur Veranschaulichung des Sprachkonstrukts der Lambda-Ausdrücke sei zunächst dasPrinzip der Methodenzeiger, der delegates, gezeigt, die bereits in früherenSprachversionen zum Einsatz gekommen sind:static bool istKlein(int i) { return (i < 42); }void test(){int[] Zahlenliste = { 32, 73, 99, 79, 17, 13, 18 };int[] kleineZahlen = Array.FindAll(Zahlenliste, new Predicate(istKlein));}Die Methode Array.FindAll, die vom Framework bereitgestellt wird, durchläuft alleElemente der Zahlenliste, wendet auf sie istKlein an und nimmt daraufhin diejeweils wahren Ergebnisse in die Liste kleineZahlen auf. Der Delegat-Typ11

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!