.NET Blog   ·   .NET Casts   ·   .NET GUI Foren   ·   .NET BlogBook   ·   WPF Blogger   ·   visual studio one   ·   ASP.NET professional

  • ACHTUNG - NEUES BLOG

    Ab sofort steht unter http://devtyr.norberteder.com mein neues Blog zur Verfügung. Dieses Blog wird nicht weiter betreut, bleibt aber erhalten. Neue Eintr%auml;ge erfolgen nur mehr im neuen Blog. Kommentare werden ebenfalls nicht mehr behandelt. Wer weiterhin meinen Einträgen und Aktivitäten folgen möchte, möge bitte RSS-Feeds, Verlinkungen etc. an die neue Location anpassen.
Download .NET Essentials Installer
Trickkiste

Schlüsselwort sealed

06.01.07 - .NET, Grundlagen
Beitrag von Norbert Eder
 Von einer Klasse die mit dem sealed-Schlüsselwort gekennzeichnet ist, kann nicht vererbt werden (sealed = versiegelt). Dies bedeutet, dass Erweiterungen nicht gewünscht sind bzw. eine weiterer Abstraktion ohnehin sinnlos wäre. Aufrufe an versiegelte Klassenmember können durch Laufzeitoptimierungen beschleunigt werden.

Beispiel


public sealed class TestClass
{
private int _a = 0;
private int _b = 0;

public int A
{
get { return this._a; }
set { this._a = value; }
}

public int B
{
get { return this._b; }
set { this._b = value; }
}
}


Ergänzungen

Strukturen (structs) sind per Definiton sealed und können daher nicht vererbt werden.
Eine Verwendung von sealed gemeinsam mit abstract ist nicht erlaubt, da man bei einer abstrakten Klasse davon ausgehen kann, dass die konkrete Implementierung nicht existiert.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Bücherregal ausgemistet, Bücher zu vergeben

06.01.07 - Blog-Intern
Beitrag von Norbert Eder
 In meiner Bücherecke findet sich eine Liste (alter) Computerbücher, die ich nicht unbedingt wegwerfen möchte. Ein Großteil wird von mir gegen Seblstabholung verschenkt. Über andere Beförderungsmöglichkeiten (sofern jemand Interesse an den Büchern hat) kann man natürlich gerne reden.

Hat jemand Interesse, dann einfach über meine Kontaktseite bei mir melden.

  2 Kommentare - 876 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Umstellung der Kategorien abgeschlossen

06.01.07 - Blog-Intern
Beitrag von Norbert Eder
 Die Kategorien sind nun vollständig auf die neue Struktur umgestellt. Wie ich bereits erwähnte, bitte ich diejenigen, die auf die Kategorien-Feeds zugreifen, dies bei sich anzupassen.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Änderungen der Kategorien

05.01.07 - Blog-Intern
Beitrag von Norbert Eder
 Die Kategorie-Struktur wurde in den letzten Tagen den neuen Gegebenheiten angepasst. Einige kleinere Änderungen sehen noch aus, dies kann aber erst nach erfolgreicher Neuzuordnung sämtlicher Beiträge geschehen. Diese werden in den nächsten Tagen umgeschlichtet, stehen jedoch nach wie vor unter bekanntem Link zur Verfügung.

Zukünftig wird es keine Unterteilung mehr in Programmiersprachen geben, da ich persönlich hauptsächlich C# einsetze und daher die meisten Codebeispiele in eben dieser Sprache gehalten sind. Zudem macht eine Unterscheidung auch wenig Sinn, da die verwendeten Klassen dieselben sind.

Weiters sind einige Kategorien aus der Liste verschwunden, da diese entweder in andere Kategorien eingegliedert wurden, oder das Beitragsaufkommen zu gering war.

Ich hoffe, dass diese Umstellung zur Übersichtlichkeit beiträgt und nicht allzugroße Verwirrung stiftet.

Neu eingeführt wurde die Kategorie Blog-Intern in der Beitrage "in eigener Sache" zu finden sind.

  Kommentar hinzufügen   |  2 Trackbacks   |  Permalink  |  Trackback-URL


.NET Unregelmäßigkeiten beim Implementieren einer abstrakten Klasse

04.01.07 - .NET, Base Framework
Beitrag von Norbert Eder
 Beim Ableiten von einer abstrakten Klasse können bekanntlich mittels STRG-SHIFT-F10 die zu implementierenden Methoden automatisch eingefügt werden. Dies sieht dann beispielsweise so aus:

public override void BeginTransaction()
{
throw new Exception("The method or operation is not implemented.");
}

Allerdings frage ich mich, warum keine NotImplementedException verwendet wird, welche bereits seit .NET 1.0 im Framework vorhanden ist.

  4 Kommentare - 745 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


.NET BlogBook veröffentlicht

04.01.07 - .NET, Allerlei
Beitrag von Norbert Eder
 

Es ist vollbracht ;-) Wie im Beitrag Ziele 2007 klar definiert bereits erwähnt, plante ich eine kleine Überraschung. Nun ist es soweit: Heute wurde die 1. Ausgabe des .NET BlogBook veröffentlicht.

Was ist das .NET BlogBook

Das .NET BlogBook ist eine Sammlung von Blog-Beiträgen aus den Blogs von mir und Kai. Diese wurden überarbeitet und stehen ab sofort in einem PDF zur Verfügung. Es soll als offline Nachschlagewerk dienen und bietet Unterstützung in vielen Entwickler-Lebenslagen.

Es ist geplant die Sammlung einmal im Quartal zu veröffentlichen. Dadurch stehen ständig aktuelle Artikel zur Verfügung. Zusätzlich werden bereits vorhandene Artikel überarbeitet und verbessert.

Das .NET BlogBook - Projektseite und Download

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


ICloneable: Etwas unsauber, nicht?

03.01.07 - .NET, Base Framework
Beitrag von Norbert Eder
 Das Interface ICloneable wird für gewöhnlich implementiert, wenn das entsprechende Objekt geklont werden soll. Nun ergibt sich aus meiner Sicht hier ein kleines Problem:

ICloneable stellt eine Methode Clone zur Verfügung. Diese wird für die Klon-Implementierung verwendet. Nun gibt es aber zwei Möglichkeiten zu klonen:

Deep Copy: Alle Objekte werden dupliziert.
Shallow Copy: Nur Objekte oberster Ebene werden vervielfältigt. Alle anderen Objekte stellen Verweise auf die tatsächlichen Objekte dar.

Das eigentliche Problem dieser Schnittstelle besteht nun in folgender MSDN-Aussage:

Clone can be implemented either as a deep copy or a shallow copy.

Dadurch ist nicht klar definiert, wie die Clone-Methode nun zu implementieren ist. Bei der Entwicklung eines Frameworks wirft dies das Problem auf, dass der Verwender dieses Frameworks (abgesehen von der möglicherweise recht dürftigen Dokumentation) nicht weiß, ob sein dubliziertes Objekt nun eine vollständige Kopie darstellt, oder eben nicht.

Aus meiner Sicht empfehle ich daher, ICloneable nicht zu verwenden und stattdessen eine eigene Implementierung vorzunehmen, die hier eindeutiger ist. Anbieten würde sich die Erstellung zweier Interfaces nach folgendem Muster:

public interface IShallowCloneable<T>
{
T ShallowClone();
}

Durch die Implementierung des Interfaces IShallowCloneable geht nun eindeutig hervor, dass dabei ein Shallow Copy durchzuführen ist.

public interface IDeepCloneable<T>
{
T DeepClone();
}

Ebenso verhält es sich beim Interface IDeepCloneable

Zu guter Letzt noch ein Hinweis auf Object.MemberwiseClone(): MemberwiseClone erstellt eine flache Kopie (Shallow Copy) des aktuellen Objektes und könnte für diesen Zweck benutzt werden. Auch hier ein kurzer Auszug aus der MSDN:

MemberwiseClone kann nicht überschrieben und nur über diese oder eine abgeleite Klasse aufgerufen werden. Verwenden Sie eine Klasse, die die ICloneable-Schnittstelle implementiert, wenn eine tiefe oder flache Kopie eines Objekts öffentlich für die Benutzer bereitgestellt werden muss.

Bei diesem Thema scheint man sich also selbst bei Microsoft nicht 100%ig einig zu sein. Daher also mein Rat für eigene Frameworks: Für den Zweck des Kopierens sollten eigene Interfaces bereitgestellt werden. Dadurch können jegliche Zweifel aus dem Weg geräumt werden. In Kombination mit einer eindeutigen Dokumentation sieht sich der Konsument des Frameworks dadurch mit keinerlei Fehl-Information konfrontiert.

  4 Kommentare - 883 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Microsoft Visio Weblog

02.01.07 - Internet
Beitrag von Norbert Eder
 Wer so wie ich doch des Öfteren mit Microsoft Visio zu tun hat, dem können diverse Tipps und Tricks einfach nicht schaden. Durch Zufall bin ich heute auf ein sehr gutes Weblog zu diesem Thema gestoßen, welches ich nicht vorenthalten möchte:

Mai-lan's Visio Blog

Leider tut sich darauf seit einem Jahr sehr wenig, aber die vorhandenen Artikel sind sehr hilfreich.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Ziele 2007 klar definiert!

02.01.07 - Blog-Intern
Beitrag von Norbert Eder
 Im Artikel 2006 geht, 2007 kommt, Veränderungen angedacht hatte ich bereits über mögliche Veränderungen rund um dieses Weblog berichtet. Über die Feiertage habe ich mir so einige Gedanken gemacht und möchte meinen Lesern diese hier mitteilen:

Folgende Neuerungen wird es 2007 hier geben:

Grundlagen, Grundlagen, Grundlagen
2007 wird ein Jahr der Grundlagen. Viele können bestimmte Techniken praktisch anwenden, es fehlt aber oft am notwendigen theoretischen Verständnis. Dieses möchte ich gemeinsam mit meinen Lesern durch die Aufbereitung von Grundlagen-Themen fördern.

Umstrukturierung Kategorien
Während einige Kategorien fast täglich von mir benutzt werden, andere jedoch kaum, werden in absehbarer Zeit Kategorien zusammengelegt bzw. neue Namen vergeben. Die Beiträge müssen - meiner Meinung nach - klarer getrennt werden um auch vom Leser leichter aufgefunden werden zu können. Die Umstellung wird wohl in den nächsten Tagen geschehen. Wer also Kategorie-Feeds meines Weblogs weiterverarbeitet, möge sich mit mir in Verbindung setzen.

Überarbeitung Tutorials, neue Artikel
Bei den Tutorials hat sich in den letzten Monaten wenig getan. Diese werden von mir in der nächsten Zeit überarbeitet und überarbeitet. Zudem werden neue Tutorials, als auch größere Grundlagen-Artikel ihren Platz bekommen.

Eine Überraschung darf nicht fehlen
Überraschungen sind immer gerne gesehen und daher wird es im Laufe des Jänners hier eine zu finden geben. Näheres möchte ich jetzt jedoch noch nicht verraten, ich werde mich jedoch noch entsprechend zu Wort melden.

Nun gut, dieses sind die grundlegenden Änderungen die dieses Weblog betreffen werden. Ich hoffe, dass mittlerweile alle gut im 2007er angekommen sind und wieder voller Elan am Entwickeln sind. Auf ein erfolgreiches und informationsreiches 2007.

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Paper zur Common Language Infrastructure (CLI)

01.01.07 - .NET, Grundlagen
Beitrag von Norbert Eder
 Die CLI-Spezifikation gibt es ja schon einige Jahre (klarerweise), doch haben sich die meisten .NET Entwickler die Paper zur CLI gespart. Hier einfach die Links zu den entsprechenden Dokumenten. Ein Durchlesen erhöht auf jeden Fall das Verständnis für .NET und die Arbeitsweise im Hintergrund.

CLI Partition I - Concepts and Architecture

CLI Partition II - Metadata Definition and Semantics

CLI Partition III - Common Intermediate Language (CIL) Instruction Set

CLI Partition IV - Profiles and Libraries

CLI Partition V - Annexes

Damit sollte die Freizeit für den Jänner 2007 erledigt sein - wer's noch nicht gelesen hat ;-)

  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL



Zurück Weiter