Ich sehe .net zum Großteil als "Delphi
VCL 2.0" - und das hat mehrere Gründe. Zum einen natürlich Anders Hejlsberg aber auch sonst gibt es viele Parallelen.
Manche Dinge finde ich in .net besser gelöst - angefangen mit den multicast delegates, über die Sicherbarkeitsdefinitionen bis hin zu den Unicodes Strings.
Unicodes Strings: Waren von Anfang an* dabei. In Delphi kann es da zu Problemen kommen, wenn die Komponente nicht mit
Unicode getestet wurde. (Okay, lässt sich kaum vermeiden wenn man das Framework umstellt...)
Sichtbarkeiten: In Delphi gibt es private, protected, public, published, strict private und strict protected. Die Sichtbarkeit hängt auch damit zusammen ob die Klassen in einer Datei stehen oder nicht.
Mir gefällt das Prinzip mit den namespaces besser - Man kann z.B. eine Datei pro Klasse hernehmen und braucht sich noch nichtmal um Kreuzverweise Gedanken zu machen!
multicast delegates spricht für sich denke ich. Auch wenn ich es noch nicht
gebraucht habe, sowas habe ich auch lieber direkt in der Sprache integriert. Man kann sich in Delphi zwar eine Lösung zusammenschustern, aber das Kostet ziemlich viel Zeit und man ist darauf angewiesen, diese Lösung auch immer zu benutzen. Fremdcode lässt sich aber nicht immer so leicht anpassen.
Zum Abschluss noch ein kleiner Codeschnipsel, den ich sehr cool finde:
Code:
for (int i = 0; i < files_lv.Items.Count; i++) // Listview durchiterieren
{
if (files_lv.Items[i].Checked) // Nur die angehakten
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Calculate), i); // Multithreaded
//Calculate(i); // Sequenziell
}
}
Durch Benutzen der einen oder der anderen Zeiel ist die Komplette Berechnung entweder sequenziell oder komplett Multithreaded. Keine zusätzliche Änderung nötig.
Zugegeben, ich musste erst etwas suchen bis ich den ThreadPool gefunden hatte. Und alles nach Calculate() muss damit zurecht kommen, in einem Thread aufgerufen zu werden. Da wurden also schon Anpassungen fällig. Aber ich finde das Stückchen Code trotzdem genial
* = ab .net 2.0, vorher hab ich's nicht benutzt
Ach ja, asp.net ist natürlich auch noch eine super Sache. Ich hab's mir einmal angesehen und meine Begeisterung für PHP ist schlagartig gesunken
Und ja, wenn man sich geschickt anstellt kann man den gleichen Code einmal als Desktop Anwendung und einmal als Webservice verwenden.