Datenfelder in C# und PHP 👍 👎

Da ich regelmäßig – insbesondere von PHP-Entwicklern – gefragt werde, wie sich das dort allseits beliebte Array in C# verwenden lässt, möchte ich dazu eine kleine Gegenüberstellung präsentieren.

Zuerst einmal sollte festgestellt werden, dass Arrays unter PHP sehr vielseitig eingesetzt werden, wofür andere Programmiersprachen (wie beispielsweise C#) jeweils eigens optimierte Datenstrukturen vorsehen. Nicht zu vergessen ist natürlich ganz allgemein die unter C# strengere Typisierung.

Wir beginnen die Beispiele demnach also erst einmal mit einfachen Listen und gehen schließlich auch auf mehrdimensionale und assoziative Felder ein.
Liste von Zeichenketten: PHP
010203
$data = ["Ab", "Cd", "Ef"];
$data[] = "Yz";
Liste von Zeichenketten: C# (nativ)
01
string[] data = {"Ab", "Cd", "Ef"};
Es gibt jedoch noch eine elegantere Lösung: Generische Container. Hierbei handelt es sich um vom konkreten Datentyp abstrahierte Mechanismen zur Sammlung und Verwaltung von Daten. Sehen wir uns also das o. g. Beispiel mit Hilfe der generischen List-Klasse in C# an:
Liste von Zeichenketten: C# (generisch)
010203
List<string> data = new List<string>() {"Ab", "Cd", "Ef"};
data.Add("Yz");
Durch den Aufruf entsprechender Instanzmethoden können wir dadurch sehr komfortabel neue Daten hinzufügen, den Inhalt sortieren und natürlich auch per LINQ darauf operieren. Dank Implementierung eines sog. Indexers ist im Übrigen auch bei dieser Variante der gewohnte null-basierte Zugriff per Index z. B. per data[0] möglich.

Gehen wir nun also einen Schritt weiter und stellen mehrdimensionale Felder gegenüber:
Mehrdimensionales Feld: PHP
010203040506
$data = [    ["Ab", "Cd"],    ["Ef", "Gh"]];
$data[] = ["Wx", "Yz"];
Mehrdimensionales Feld: C# (nativ)
01020304
string[,] data = {    {"Ab", "Cd"},    {"Ef", "Gh"}};
Mehrdimensionales Feld: C# (generisch)
010203040506
List<List<string>> data = new List<List<string>>() {    new List<string>() {"Ab", "Cd"},    new List<string>() {"Ef", "Gh"}};
data.Add(new List<string> {"Wx", "Yz"});
Zum Schluss sollen natürlich noch assoziative Felder erwähnt werden, welche wir in C# mit Hilfe eines Dictionary umsetzen:
Assoziatives Feld: PHP
010203040506
$data = [    'FirstName' => "Holger",    'LastName' => "Stehle"];
$data['City'] = "Berlin";
Assoziatives Feld: C#
0102030405060708
Dictionary<string,string> data = new Dictionary<string,string>() {    {"FirstName", "Holger"},    {"LastName", "Stehle"}};
data.Add("City", "Berlin"); // – oder auch -data["City"] = "Berlin";
Zum Durchlaufen eines solchen Feldes in C# bietet sich die Verwendung der KeyValuePair-Struktur an:
Assoziatives Feld durchlaufen: C#
01020304
foreach(KeyValuePair<string,string> entry in data) {    // entry.Key: "FirstName", "LastName" und "City"    // entry.Value: "Holger", "Stehle" und "Berlin"}
Das soll es für den Moment auch erst einmal gewesen sein, zukünftig möchte ich jedoch noch ein paar derartiger Gegenüberstellungen durchführen. Insbesondere auch auf die generische Entwicklung unter C# werde ich noch gesondert in weiteren Beiträgen eingehen.

RSS-Feeds bei Links 👍 👎

Auf der Seite "Links" sind nun die RSS-Feeds der Seiten verlinkt, sofern verfügbar.

Projektseite für befreundete Band erneuert 👍 👎

Auch Webpräsenzen kommen in die Jahre und benötigen hin und wieder eine kleine "Renovierung".

Diesmal war es bei der Homepage einer befreundeten Band an der Zeit dazu, wobei es sich um eine vollständige Neuentwicklung mit einer Umstellung von PHP auf ASP.NET MVC mit C# handelt.

Vielleicht hat ja jemand Lust, sich das neue Werk anzusehen. Videos mit Hörproben gibt es natürlich auch! Smiley: cool


» Radio-UNfriendly.de besuchen

Städteportal für Berlin und Hamburg veröffentlicht 👍 👎

Nach langer Planungs- und Implementierungszeit habe ich BitStadt.de, ein Portal für die beiden Stadtstaaten Berlin und Hamburg, fertiggestellt. Du findest dort viele Informationen zu beiden Städten.

Ich würde mich natürlich sehr über einen Besuch freuen!


» BitStadt.de besuchen

Domaingrabbing 👍 👎

Wer schon einmal eine Domain für ein neues Projekt gesucht hat, kennt das Problem natürlich: Die gewünschte Domain ist leider bereits vergeben. Dann denkt man sich, da war wohl – offensichtlich – jemand schneller, möchte es sich mal ansehen und sieht, was irgendwie klar war: Die Domain ist "geparkt", mit zumindest gefühlten 500 Links versehen und steht zum Verkauf.

D. h. es schaltet sich hier ohne Not und Auftrag jemand zwischen Registrar und Kunde, um auch noch daran mitzuverdienen. Wobei "verdienen" hier mehr als fraglich ist, es wird schließlich keinerlei Mehrwert erbracht, sondern im Gegenteil völlig unnötiger Umstand verursacht.

Letztlich nichts Neues, aber das nervt mich immer wieder und wollte mal hier festgehalten werden. Leider habe ich auch bisher keine praktikable Idee, wie sich das verhindern lässt. Nicht zuletzt ist natürlich problematisch, dass man als Domain-Anbieter schließlich erst einmal daran verdient, wenn hunderte oder gar tausende Domains "einfach nur so" registriert werden.

Projektverweise

Kategorien / Archiv  |  Übersicht RSS-Feed

Schlagworte

Suche