Rainer's profileCyrons BlogPhotosBlogListsMore ![]() | Help |
|
|
April 21 EventArgs mit Hintergrundbeleuchtungprivate void button1_Click(object sender, EventArgs e) Wie oft habe ich das schon gesehen! Mit der EventArgs-Klasse ist es allerdings nicht ganz so einfach, weil sie auf den ersten Blick wie eine Kuriosität wirkt. Sie ist nämlich eine Basisklasse mit nur einem öffentlichen Member - und der erscheint auch noch wenig sinnvoll. Schauen wir uns an, was die EventArgs-Klasse bietet: class EventArgsTest : EventArgs { // Von der EventArgs-Klasse kann nichts geerbt werden. // Die einzigen überschreibbaren Objekte stammen aus der Superklasse Object! public override bool Equals(object obj) { return base.Equals(obj); } public override int GetHashCode() { return base.GetHashCode(); } public override string ToString() { return base.ToString(); } } static class TestClass { public static void TestMethod() { /* Das Einzige Objekt das EventArgs anbietet, ist eine statische readonly Variable * vom Typ EventArgs, und die ist auch noch leer! */ // Beide Variablen sind inhaltlich identisch: var test = EventArgs.Empty; EventArgs test2 = new EventArgs(); } } Wie sie sehen, sehen sie nichts. Tatsächlich ist EventArgs bis auf die Variable "Empty" leer! Was soll das? Type typeTest = e.GetType(); ergibt, daß e vom Typ MouseEventArgs ist. Der Hintergrund: this.button1.Click += new System.EventHandler(this.button1_Click); Damit dieser Delegat möglichst flexibel eingesetzt werden kann, erwartet er als Parametertypen object und EventArgs . Über object sender können z.B. beliebige Klasseninstanzen bzw. this übergeben werden und über EventArgs e alle Klassen die von EventArgs erben. Fazit: MouseEventArgs test = (MouseEventArgs)e; // Jetzt kommt man an alle Objekte, die MouseEventArgs zu bieten hat. // Zum Beispiel: System.Drawing.Point p = test.Location; oder so: MouseEventArgs test = e as MouseEventArgs; System.Drawing.Point p = test.Location;...ist das Gleiche in grün. ;-) April 20 Buchempfehlung "Head first Design Patterns" oder "Entwurfsmuster von Kopf bis Fuß"Wer "OOP" sagt, muß auch "Design Patterns" sagen. Dazu kann ich "Entwurfsmuster von Kopf bis Fuß" (wer lieber die englische Variante mag: "Head first Design Patterns") wärmstens empfehlen (Verlag: O'Reilly). Das Ding ist zwar für Java geschrieben, aber die Sprache unterscheidet sich syntaktisch kaum von C#, ist also keinerlei Hürde.
Das ist eigentlich schon alles, was der C#-Entwickler braucht, um die Java-Codes im Buch zu verstehen.
Die Beispiele sind bewußt einfach gehalten, sehr anschaulich und beschränken sich auf das Wesentliche. Darum ist es auch für Einsteiger besonders gut geeignet. Das inhaltliche Design des Buches entspricht ganz dem gewohnten (und mir außerordentlich gut gefallenden) Head First-Stil. Wer sich noch nicht zum Kauf entscheiden kann, sollte mal einen Blick in die Vorschau bei Google books werfen: April 07 Active Objects und FuturesKeine Zeit, ich hab viel zu tun, aber ich möchte hier trotzdem etwas erwähnen, das vielleicht nicht nur für mich von größtem Interesse ist. :-) http://www.mycsharp.de/wbb2/thread.php?threadid=53609 Weitere Links, die ich zu diesem Thema gefunden habe (absolut lesenswert!): <http://blogs.msdn.com/jaredpar/archive/2008/01/28/active-objects-and-futures.aspx> <http://blogs.msdn.com/jaredpar/archive/2008/03/30/activeobject.aspx> <http://research.microsoft.com/comega/doc/comega_tutorial_active_objects.htm> <http://blogs.msdn.com/jaredpar/archive/2008/02/13/building-future-t.aspx> <http://blogs.msdn.com/jaredpar/archive/2008/02/12/building-the-base-future.aspx> <http://blogs.msdn.com/jaredpar/archive/2008/01.aspx> <http://blogs.msdn.com/jaredpar/archive/tags/Futures/default.aspx> <http://blogs.msdn.com/jaredpar/archive/2008/01/28/active-objects-and-futures.aspx> |
|
|