System.Object.ToString()

Die ToString() Methode ist eine der am meisten verwendeten Funktionen im .Net Framework. Sie ist die einzige Methode die von System.Object implementiert wird und deshalb bei jedem Objekt verfügbar ist – ganz egal von welchem Typ. Die ToString()-Methode erlaubt die Repräsentation eines Objektes als String. Wird sie nicht angegeben, muss jeder Benutzer der Klasse immer selber entscheiden (und entwickeln), wie die Klasse dargestellt wird. Besonders beim Databinding ist das ein immer wiederkehrender Task. Es sollte also immer ein sinnvoller “override” gemacht werden, der eine sinnvolle Darstellung des Objektes als string zurück-gibt. Im einfachsten Fall sieht die Implementierung einfach so aus: … Continue reading System.Object.ToString()

Boxing and Unboxing

Welche Variante gefällt Ihnen besser: Instinktiv werden die meisten erst einmal Variante a bevorzugen. 10.ToString() sieht einfach komisch aus. Dafür gibt es auch noch nicht einmal Unterstützung durch IntelliSense. Aber schauen wir uns mal Variante A genauer an: Die Zahlen sind Integer-Werte (und Integer-Werte sind Value-Typen!). Die Methode Console.WriteLine() hat aber keine Überladung, die Integer-Werte übernimmt. Sie übernimmt nur Paramter vom Typ System.Object. Wenn ein Wertetyp als Object verwendet wird, stellt der JIT-Compiler auf dem Heap eine Box in die eine Kopie des Objektes gelegt wird. Jeder Zugriff auf das Objekt erfolgt über eine Kopie aus der “Box”. Dieser Prozess … Continue reading Boxing and Unboxing

Cast vs. As/Is-Operator

C# ist ja eine stark typisierte Sprache (von dynamic in C# 4.0 abgesehen). Mit den “Generics” wurde der Bedarf der Typumwandlung auch sehr reduziert. Trotzdem gibt es immer wieder die Situation, in der man ein Objekt umwandeln muss. Zum Beispiel bei der Verwendung von Hashtables. In diesem Fall hat man 2 Möglichkeiten: Verwendung des AS-Operators Verwendung von Cast Ich denke es ist offensichtlich, dass die erste Variante übersichtlicher und damit wartbarer ist. Außerdem hat sie einen Geschwindigkeitsvorteil, wenn das Objekt nicht von dem entsprechenden Typ ist, da keine Exception geworfen wird. Wichtig ist, dass nicht erst mit IS geprüft wird, … Continue reading Cast vs. As/Is-Operator

Verwenden eines Wörterbuches für die Codeanalyse (Code Analysis Dictionary)

Um der Codeanalyse Eigennamen beizubringen, kann man dem Projekt eine “Dictionary” hinzufügen. Warning    6    CA1704 : Microsoft.Naming : Correct the spelling of ‘Alegri’ in assembly name ‘Alegri.SharePoint.FarmSolution1.dll’.    Alegri.SharePoint.FarmSolution1 Warning    6    CA1709 : Microsoft.Naming : Correct the casing of ‘MPP’ in namespace name ‘Alegri.SharePoint.FarmSolution1.eMPP’ by changing it to ‘Mpp’.    Alegri.SharePoint.FarmSolution1 Einfach eine XML Datei mit dem Namen CustomDictionary.xml dem Projekt hinzufügen. Danach die Buildaction für die Datei auf “CodeAnalysisDictionary” stellen und die Warnungen sind weg. Eine ausführliche Beschreibung findet ihr auf msdn. Continue reading Verwenden eines Wörterbuches für die Codeanalyse (Code Analysis Dictionary)