Laden...

liste/array mit beliebigen werten als indices ?

Erstellt von pixartist vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.899 Views
P
pixartist Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren
liste/array mit beliebigen werten als indices ?

wie kann einen array erstellen, bei dem die indices durch beliebige werte gebildet werden ? z.B.
array["eins"] = 1;
array["zwei"] = 2;
array["drei"] = 3;
usw.

B
387 Beiträge seit 2005
vor 13 Jahren

Hi,

schau dir mal Dictionary<T, T> an (Namespace System.Collections.Generic).
in deinem Fall könnte das so aussehen:


Dictionary<string, int> myDict = new Dictionary<string, int>();
myDict["eins"] = 1;
myDict["zwei"] = 2;
myDict["drei"] = 3;

Das gehört aber zu den absoluten Grundlagen, steht auch in zig Tutorials drin.

Gruß

328 Beiträge seit 2006
vor 13 Jahren

Mittels einer Dictionary würdest du die gewünschte Funktionalität bekommen:

            Dictionary<string, int> dict = new Dictionary<string, int>();
            dict["eins"] = 1;
            dict["zwei"] = 2;
            dict["drei"] = 3;

            Console.WriteLine(dict["eins"]);
            Console.WriteLine(dict["zwei"]);
            Console.WriteLine(dict["drei"]);

€dit: Blacal war schneller ... sry 😦

Träume nicht dein Leben sondern lebe deinen Traum.
Viele Grüße, David Teck

P
pixartist Themenstarter:in
11 Beiträge seit 2010
vor 13 Jahren

danke, genau das habe ich gesucht

699 Beiträge seit 2007
vor 13 Jahren

Ob MS die Arrays irgendwann mal auf Obsolete setzen wird? Bei all den Fragen immer, wie man "was" bei den Array machen kann, obwohl es da eine viel bessere Lösung schon gibt, wundert mich das MS dies nicht sterben lässt.

Grüße Stephan

795 Beiträge seit 2006
vor 13 Jahren

...Arrays ... Obsolete setzen ...

oO? Und was machen dann die ganzen Anwendungen die z.B. Netzwerkverkehr haben (Byte[])? Oder die Bitmaps bearbeiten (auch Byte[])? Von den ganzen anderen Verwendungsmöglichkeiten mal abgesehen? Auch Dictionary & List basieren auf Arrays. Diese obsolete zu kennzeichnen würde bestimmt 2100 :evil: Warnungen erzeugen und das nur in den Core-Libraries! Ich hoffe du hast das nur als Scherz gemeint... SCNR

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
699 Beiträge seit 2007
vor 13 Jahren

Okay, hast mich da überzeugt. Wusste nicht, das im Hintergrund noch so oft und intensiv Arrays verwendet werden. Aber andersrum frage ich mich dann, warum wird das Array dann teilweise noch in den Büchern so hoch gepriesen?
Schlussendlich haben die Fragensteller ja das auch von irgendwoher ( gelesen ). Machen sich Authoren dazu keine Gedanken mehr? Oder hinterfragt da kein Verlag die Techniken. Ganz zu schweigen von den Blogs und deren "Programmierer" die das geschrieben haben ( will da sicher nicht alle über einen Kamm scheren, aber da sind sicher auch welche dabei, die es besser wissen sollten.)

Aber schön, das hier im Forum immer so konsequent auf die Fehler und alternativen hingewiesen wird.

795 Beiträge seit 2006
vor 13 Jahren

warum wird das Array dann teilweise noch in den Büchern so hoch gepriesen?

Wie willst du denn um Arrays rumkommen? Wenn du eine Liste brauchst, kannst du ja meinetwegen noch eine LinkedList nehmen, aber da gibt es dann auch schon böse Performance-Probleme, wenn du auf einen bestimmten Index zugreifen willst. Wie willst du denn generell mehrere Objekte des gleichen Typs speichern, die du indizieren willst?

In meinen Augen sind Arrays DAS grundlegende Element von Programmierung überhaupt. Sieht man auch daran, dass es keine mir bekannte Programmier-/Scriptsprache gibt, die keine Arrays in irgendeiner Form unterstützt. Die Register die in der Maschinensprache benutzt werden sind nämlich nichts anderes als "Hardware-Arrays". Und ALLES wird im Endeffekt über ASM oder ähnliches zu Maschinensprache.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`
49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Stipo,

mich wundert die gefühlte 1000ste Frage nach Arrays mit anderem Index-Typ deutlich weniger, als der anscheinend zunächst ernst gemeinte Vorschlag, Arrays auf obsolet zu setzen. 😃

Davon abgesehen muss man m.E. sowieso zwischen dem Begriff/Konzept Array und den Array-Datentypen in C# bzw. .NET trennen. Selbst wenn es in C#/. NET nie Arrays als Datentyp gegeben hätte, würden die Fragen nicht aussterben, weil sie sich m.E. auf das Konzept von Arrays beziehen. Man kann ja schon an "liste/array" im Titel sehen, dass es nicht um Arrays im speziellen ging, sondern allgemein um eine Datenstruktur, die Indexzugriffe mit Indizes erlaubt, die nicht von einem Integer-Datentyp sind.

Hallo Schamese,

ich sehe das also ähnlich wie du, auch wenn Arrays typischerweise auf dem Heap und nicht in Hardware-Registern abgelegt werden, weshalb ich diese Analogie bzw. Begründung etwas irreführend finde.

Zumindest das Ur-Lisp war eine Programmiersprache ohne Arrays. Der wichtigste Typ in Lisp - wie der Name LISt Processing schon sagt - sind Listen. Und die basieren auch intern nicht auf Arrays, sondern auf einer verketten Datenstruktur.

herbivore

795 Beiträge seit 2006
vor 13 Jahren

weshalb ich diese Analogie bzw. Begründung etwas irreführend finde.

Was ich meinte war eigentlich, dass auch in den Registern an einem bestimmten Index ein bestimmter Wert abgelegt wird. Also sind die Register selbst nichts anderes als Arrays - Bereiche, in denen man indizierte Werte ablegt.

Gruß, Christian.

`There are 10 types of people in the world: Those, who think they understand the binary system Those who don't even have heard about it And those who understand "Every base is base 10"`