.NET Tipps (Teil 1/n)

Nun wo ich endlich meinen neuen Blog habe, möchte ich meine .NET-Tipps-Sammlung erneut aufleben lassen. Selbst wenn man jahrelang mit dem .NET-Framework gearbeitet hat, gibt es immer wieder Ecken, wo man vorher noch nie drin war. Tipps und Tricks, die man im Laufe eines Entwicklerlebens mal so nebenbei herausfindet, sind oft mit die wertvollsten Informationen, weil sie entweder die tägliche Arbeit erleichtern, oder Antworten geben auf Dinge, "die man schon immer mal wissen wollte"...

Ich hab mir mal ein paar Kleinigkeiten herausgesucht, die vllt. noch nicht jeder weiß, und die man einfach wissen sollte. Leider merkt man, wenn man jahrelang als Entwickler arbeitet, manchmal schon gar nicht mehr, was man vllt. so noch nicht wissen könnte.

Zusammenfassung am Anfang

Falls jemand meine ganzen Aus- und Abschweifungen oder Sonstiges nicht lesen mag, für den hier kurz und knackig die Tipps zusammengefasst. Für Erklärungen musste dann aber doch unten lesen :-)

 

System.Reflection.MethodBase.GetCurrentMethod();
newItem = oldItem ?? new ItemClass();
using WCF = System.ServiceModel.Channels;
string.IsNullOrEmpty()
System.Threading.Interlocked
System.Security.SecureString
GC
employee.Work += employee_Work;
System.Math.Max(myIntValue, 1);

 

So, nun mal noch zu den einzelnen Punkten:

Infos zur Klasse MethodBase

Habt ihr gewusst, dass es in der Klasse MethodBase eine statische Methode gibt, die da heißt "GetCurrentMethod()"??? So kann man nicht nur die aktuelle Methode und das Objekt herausfinden, in der oder in dem man sich gerade befindet, das coole an dieser Methode ist, dass sie auch für statische Klassen funktioniert.

Der ??-Operator

Kennt ihr schon den ??-Operator? Dieser Operator prüft den linksstehenden Term auf null. Ist der null, so wird der rechte Term zurückgegeben. Ist in dem kleinen Beispiel hier oldItem = null, dann wird new ITemClass() zurückgegeben, ansonsten, wenn oldItem ein gültiger Wert ist, wird oldItem zurückgegeben...

newItem = oldItem ?? new ItemClass();

DateTime.Now

Das wissen wahrscheinlich die meisten, aber ich sags trotzdem. Wenn nur ein einziger dabei ist, ders noch nicht weiß, hat es sich gelohnt. In DateTime.Now findet man die aktuelle Uhrzeit mit dem aktuellen Datum.. :-)

Using-Alias

Manche Entwickler binden mit Absicht die usings nicht ein, weil “man so ja sofort sieht, woher die Klasse kommt”. Diese Argumentation kann ich teilweise nachvollziehen, deswegen könnte man anstatt immer den gesamten WCF-Namespace auszuschreiben, einfach das hier nutzen: “using WCF = System.ServiceModel.Channels;”

IsNullOrEmpty in System.string

Die Klasse string beinhaltet eine statische Methode namens "IsNullOrEmpty". Viele wissen nicht, dass strings auch null sein können. Wenn man z.B.

string name;

name.Lenght

macht, so schmiert einem sein Progrämmchen ab. Und einfach nur auf "" prüfen is auch nich so dolle. Viel sicherer ist if(string.IsNullOrEmpty(name)), dann... erst weitermachen. Im übrigen gibt es auch string.Empty. Das ist ein Leerstring, vergleichbar mit "", aber sauberer ist es, string.Empty zu nutzen.

Atomare Methoden der Interlocked-Klasse

Wer viel mit Threads programmiert, sollte die Interlocked-Klasse kennen. Sie beinhaltet atomare Methoden, also Methoden, die nicht unterbrochen werden können. Es ist ja so, dass so ein simples "i++" keine atomare Methode ist. Es sind mehrere Registerumräumungen nötig (sichern, inkrementieren, zurückschreiben). Wenn dabei ein anderer Thread dazwischenhaut, arbeitet der vllt. auf einem falschen Wert. Deswegen lieber das Inkrement der Interlocked-Klasse nutzen, damit passiert das nicht.

SecureString für sichere Strings im Speicher

Ihr wollt eine Anwendung schreiben, wo man auch mal ein Passwort im Speicher halten möchte? Um es möglichen Angreifern wenigstens ein wenig schwerer zu machen, gibt es die Klasse "SecureString" im Security-Namespace. Damit wird der String verschlüsselt im Speicher abgelegt... Kann manchmal bestimmt nicht schaden.

Ein wenig Garbage Collection 

Mit "GC" kann man einfach mal eben so auf den GarbageCollector zugreifen. Der sammelt die alten toten Objekte ein. Hier kann man das Einsammeln manuell starten, oder auch festlegen, dass Objekte nicht eingesammelt werden sollen.

1.0 == 0.9Periode9 = true... ???.   <-- Hää?

Zu guter letzt. Habt ihr gewusst, dass die beiden folgenden Ausdrücke genau das Gleiche sind?
"eployee.Work += new EventHandler( employee_Work );"
und
"employee.Work += employee_Work;"
Ja, doll. 1 ist ja auch exakt das gleiche wie 0,9Periode9... aber wir wollen ja nicht mit Mathematik anfangen...

Na wenn wa eh gerade bei Mathe sind

Schaut euch mal um in der Klasse “System.Math”. Die beinhaltet sehr viele statische Methoden, die auch nützlich sein können, wenn man keine mathematische Anwendung schreiben will. Zum Beispiel habe ich eine int-Property, die aufgrund von Konventionen immer mindestens 1 zurückgeben muss. Also return System.Math.Max(myIntValue, 1);

Published 07 Dezember 2009 09:28 von Dosihris
Abgelegt unter:

Kommentare

Keine Kommentare

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend) 
Nico Franze Herzlich Willkommen auf meinem Blog. Ich bin Nico, freier Softwareentwickler sowie Autor für Fachzeitschriften. Hab mit .NET Version 1.0 begonnen (damals noch VB.Net) und bin dann schlussendlich bei C# gelandet. Mehr Infos gibts unter www.nfranze.de


Suche

Los

Translator Widget

Dieser Blog

Syndikation


Locations of visitors to this page