Fields in C# and PHP
Da ich regelmäßig – insbesondere von PHP-Entwicklern – gefragt werde, wie sich das dort allseits beliebte
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.
Gehen wir nun also einen Schritt weiter und stellen mehrdimensionale Felder gegenüber:
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
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 010203
$data = ["Ab", "Cd", "Ef"];
$data[] = "Yz";
List
-Klasse in C# an:
Liste von Zeichenketten: C# (generisch)
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 010203
List<string> data = new List<string>() {"Ab", "Cd", "Ef"};
data.Add("Yz");
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# (generisch)
Zum Schluss sollen natürlich noch assoziative Felder erwähnt werden, welche wir in C# mit Hilfe eines 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"});
Dictionary
umsetzen:
Assoziatives Feld: PHP
010203040506
$data = [ 'FirstName' => "Holger", 'LastName' => "Stehle"];
$data['City'] = "Berlin";
Assoziatives Feld: C#
Zum Durchlaufen eines solchen Feldes in C# bietet sich die Verwendung der 0102030405060708
Dictionary<string,string> data = new Dictionary<string,string>() { {"FirstName", "Holger"}, {"LastName", "Stehle"}};
data.Add("City", "Berlin"); // – oder auch -data["City"] = "Berlin";
KeyValuePair
-Struktur an:
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.
Holger
am 7/12/2012 um 8:10 PM Uhr
in Softwareentwicklung
.NET · C# · Generika · PHP · Softwareentwicklung
.NET · C# · Generika · PHP · Softwareentwicklung
Project links
-
BitStadt – Stadtportal
Berlin · Hamburg · Amsterdam -
CCC – Fahrplan
Schedules for the CCCongress
Categories / Archive | Übersicht
- PHP functions in C# (136)
- Dictionary (257)
Tags
.NET · ADO.NET · Work · ASP.NET MVC · Blog · C# · Generics · Society · Computer Science · Java · LINQ · Logic · Mathematics · Network · PHP · Project · Security · Software development · Studies · Technics · Theory · Web design · WPF