C#: String == string
-
Kann mir das einer erklaeren
in den beschreibungen von String sowie von string taucht das selbe auf - und beide stammen aus dem System namensraum
wo ist der unterschied?
wann sollte ich was verwenden ?wenn ich
SortedList<int, String>
mache - schlaegt mir visual studio als new
= new SortedList<int, string>
vorversteh ich nicht /=
und visual studio faerbt beide anders ein - string blau, String dieses hellgrau
BTW: was ist das C# equivalent zur std::multimap?
-
afaik ist "string" ein datentyp und "String" eine klasse. wenn ich mich nicht irre.
-
ich dachte string wäre lediglich ein Alias von System.String, welches den String repräsentiert oder so
-
Vorden schrieb:
ich dachte string wäre lediglich ein Alias von System.String, welches den String repräsentiert oder so
Genau so ist es.
http://msdn.microsoft.com/de-de/library/362314fe.aspx
-
Das eine (string) ist das C# builtin-Keyword/Datentyp, das andere ist der DotNet-Datentyp. Sie sind identisch.
Welche Funktionalität brauchst Du aus std::multimap? Wenn Du einen eigenen Typen ablegen willst kannst Du doch eigene Comparer/Sorter definieren und bestimmen was duplikate sind und was nicht.
-
Mr Evil schrieb:
BTW: was ist das C# equivalent zur std::multimap?
Es gibt keins, man kann sich allerdings folgendermaßen eins bauen:
var multimap = new Dictionary<int, List<string>>();
Mit anderen Worten, statt der Elemente speichert man Listen von Elementen.
Wenn die Elemente sortiert sein sollen, nimmst Du natürlich eine 'SortedList' statt des 'Dictionary's.
Noch was zu string/String: Es ist Konvention, die Schlüsselwörter statt der .NET-Datentypen zu verwenden (auch wenn diese Konvention reichlich bescheuert ist). Eine Ausnahme sind mitunter WinAPI-Deklarationen, da dort z.B. durch 'Int16' besser ausgedrückt ist, welcher Datentyp wirklich verlangt ist.
-
vielen dank - das reicht mir als antwort
ich persoenlich nehm schon immer das "string" - also passt das #gg
das mti den multimap war rein informativ, noch hab ichs nicht gebraucht - war mir nur aufgefallen als ich von cpp auf c# gewechselt bin, "hei wo sind die maps" #gg
-
Mr Evil schrieb:
das mti den multimap war rein informativ, noch hab ichs nicht gebraucht - war mir nur aufgefallen als ich von cpp auf c# gewechselt bin, "hei wo sind die maps" #gg
Hmm, na das ist so ne Sache. Üblicherweise bin ich der erste, der sagen würde, dass die STL-Datenstrukturen super designed worden sind, die .NET-Datenstrukturen hingegen armselig (und ja, ich habe mich mit diesem Thema schon recht intensiv auseinandergesetzt).
Die assoziativen Container stellen da aber eine kleine Ausnahme dar. Dass C++ bis TR1 keinen unsortierten assoziativen Container enthielt ist schon ziemlich armselig, denn unsortierte Container braucht man einfach häufiger als sortierte, und sie sind schlicht und ergreifend effizienter für viele Anwendungszwecke. Multimaps hingegen sind ein Spezialfall, den man in der Praxis recht selten braucht, und wenn, dann ist die Map von Listen eigentlich sowieso immer eine gute Wahl.