Autor: Steffen Liersch

Threads und Deadlocks

Der Einsatz von Sperren zur Thread-Synchronisation birgt immer ein Deadlock-Risiko. Blockierungen treten dann auf, wenn zwei Sperren in unterschiedlicher Reihenfolge benutzt werden. Das folgende Beispiel zeigt exemplarisch eine fehlerhafte Implementierung, die im Multithreading-Einsatz zu Deadlocks führen wird.

Weiterlesen …

Nullwerte für Wertetypen

Im .NET Framework sind Datentypen entweder Wertetypen oder Referenztypen. Wertetypen haben grundsätzlich einen Standardkonstruktor, der dafür sorgt, dass alle Member-Variablen mit ihrem Standardwert initialisiert werden. Als Standardwert wird dabei auf Speicherebene der Wert 0 verstanden. Es ist generell nicht möglich, für Wertetypen einen Standardkonstruktor zu implementieren.

Weiterlesen …

Eigenschaften statt schreibgeschützter Variablen

Das .NET Framework kennt schreibgeschützte Variablen als Alternative zu Konstanten. Während der Wert von Konstanten bereits bei der Kompilierung bekannt sein muss, können schreibgeschützte Variablen zur Laufzeit im Konstruktor initialisiert werden (oder natürlich auch inline). Variablen veränderlicher Verweistypen Eine Variable kann unabhängig vom Datentyp als schreibgeschützt gekennzeichnet werden. Der Schreibschutz ist für Werttypen nach der […]

Weiterlesen …

Erweiterungsfunktionen in C# 3.0

Erweiterungsfunktionen werden ab C# 3.0 unterstützt. Sie ermöglichen das nachträgliche Hinzufügen von Member-Funktionen zu Klassen und Schnittstellen. Versiegelte Klassen können ebenso erweitert werden, wie Klassen anderer Assemblies. Erweiterungsfunktionen können bestehende Funktionen nicht überschreiben oder verdecken. Bestehende Funktionen haben gegenüber Erweiterungsfunktionen Vorrang.

Weiterlesen …