by Wolfgang Kluge
Mai 07, 2009 17:55
Wer sich noch erfolgreich gegen die zugegebenermaßen ungewöhnlich anmutende Schreibweise der Lambda-Ausdrücke in .NET wehrt, dem kann nur gesagt werden: so schlimm wie es aussieht ist's bei weitem nicht! Und einmal verinnerlicht ist's wie Fahrradfahren. Warum man sich daran gewöhnen sollte? Weil man es kann ;)
Allgemein
Lambda(λ)-Ausdrücke gehören irgendwie zu den anonymen Methoden. Allerdings hat man sie nicht umsonst "Ausdruck" und nicht "Methode" genannt. Sie sind also nur ähnlich. Sie können sich aber exakt genauso verhalten wie anonyme Methoden. Dazu müssen sie lediglich einem delegate zugewiesen werden. Grob gesagt sind sie eine Weiterentwicklung der anonymen Methoden.
vollständigen Artikel anzeigen...
02d51a4f-3a68-4a7d-9f78-8a23b84bb845|5|4.4
Tags: C#
C#
by Wolfgang Kluge
Mai 03, 2009 13:26
Nicht unbekannt - aber dennoch nicht gerade oft verwendet - fristet der c#-Operator ?? sein dasein. Zu Unrecht? Lässt sich doch mit diesem recht einfach testen, ob in einer Objektvariable ein Objekt oder null steht und entsprechend etwas anderes zurückgeben. In dem Beispiel
string test1 = null, test2 = "irgendwas";
Trace.WriteLine( test1 ?? "(null)" );
Trace.WriteLine( test2 ?? "(null)" );
wird - wie man sich bestimmt schon denken kann - zuerst "(null)" und dann "irgendwas" ausgegeben. Oder zu Deutsch: Es wird der linke Operand zurückgegeben, falls dieser nicht null ist, ansonsten wird der rechte Operand zurückgegeben.
Damit wird einem c#-Entwickler eine sehr einfache und leserliche Möglichkeit gegeben, auf null-Werte zu reagieren. Selbstverständlich kann man mit dieser Schreibweise auch "Schindluder" betreiben und den Code so unleserlich wie nur irgend möglich gestalten. Wenn man das aber nicht vorhat, warum dann nicht verwenden?
vollständigen Artikel anzeigen...
c7b11904-2c0a-4d3d-9fd8-27fe2c4d6240|0|.0
Tags: C#
C#
by Wolfgang Kluge
April 30, 2009 19:30
Insgesamt 15 Datentypen können direkt mit C#-Keywords beschrieben werden. Diese Schlüsselwörter sind dabei "nur" Aliasnamen für entsprechende .NET-Framework-Datentypen.
Übersicht
Die meisten Datentypen sind Werttypen (siehe struct). Diese können den angegebenen Werte annehmen. Dagegen können Verweistypen wie string und object (und alle Klassen) zusätzlich den "Wert" null annehmen. Will man nun, dass auch ein Werttyp null annehmen kann, so kann man auf die Nullable-Typen zugreifen.
| Keyword |
.NET-Datentyp |
Speicher |
Wertebereich |
Bemerkung |
| bool |
System.Boolean |
8 bit 1 byte |
true oder false (0xFF oder 0x00) |
|
| byte |
System.Byte |
8 bit 1 byte |
0x0 bis 0xFF 0 bis 255
|
|
| char |
System.Char |
16 bit 2 byte |
0x0 bis 0xFFFF (ein Unicode-Zeichen) 0 bis 65.535 |
einzelnes Unicode-Zeichen innerhalb einfachen Anführungsstrichen (') |
| decimal |
System.Boolean |
128 bit 16 byte |
(-7,9x1028 bis 7,9x1028) / 10x10(0 bis 28) |
Suffix M |
| double |
System.Double |
64 bit 8 byte |
-1,79769313486232x10308 bis 1,79769313486232x10308 |
Suffix D |
| float |
System.Single |
32 bit 4 byte |
-3,402823x1038 bis 3,402823x1038 |
Suffix F |
| int |
System.Int32 |
32 bit 4 byte |
0x8000 0000 bis 0x7FFFFFFF -2.147.483.648 bis 2.147.483.647
|
|
| long |
System.Int64 |
64 bit 8 byte |
0x8000 0000 0000 0000 bis 0x7FFF FFFF FFFF FFFF -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807
|
Suffix L |
| object |
System.Object |
|
|
|
| sbyte |
System.SByte |
8 bit 1 byte |
0x80 bis 0x7F -128 bis 127
|
|
| short |
System.Int16 |
16 bit 2 byte |
0x8000 bis 0x7FFF -32.768 bis 32.767 |
|
| string |
System.String |
|
|
Kein oder mehrere Unicode-Zeichen innerhalb doppelten Anführungsstrichen (") - oder null. |
| uint |
System.UInt32 |
32 bit 4 byte |
0x0 bis 0xFFFF FFFF 0 bis 4.294.967.295 |
|
| ulong |
System.UInt64 |
64 bit 8 byte |
0x0 bis 0xFFFF FFFF FFFF FFFF 0 bis 18.446.744.073.709.551.615 |
Suffix UL (U, L) |
| ushort |
System.UInt16 |
16 bit 2 byte |
0x0 bis 0xFFFF 0 bis 65.535 |
|
vollständigen Artikel anzeigen...