Laden...

Variablenname aus String erstellen

Erstellt von norathem vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.557 Views
N
norathem Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren
Variablenname aus String erstellen

Hallo zusammen,

ich hoffe ich habe das richtige Unterforum getroffen - war mir nicht so genau sicher unter was mein Problem eigentlich läuft. Der Titel ist vielleicht auch etwas unglücklich gewählt aber mir ist leider nichts eingefallen wie ich es am besten in kurzer und pregnanter Form in 2-3 Wörter packen kann.

Also hier die Langform:

Also im Prinzip würde ich gerne ungefähr folgendes machen können:


int i;
string s = "i";

s.toVar() = 4;

Und dann sollte in der Variablen i 4 stehen.

Wofür brauch ich das ganze? Nun im Grunde lediglich um Schreibarbeit zu sparen. Nehmen wir mal an ich hätte 50 Labels. Alle heisen L_0, L_1, L_2 usw.
Nun lass ich mir per Random eine Zahl zwischen 0 und 49 ausgeben und möchte dann in das entsprechende Label etwas hineinschreiben.

Nun kann ich natürlich 50 if oder case Fälle schreiben - viel geschickter fände ich es aber wenn ich die generierte Zahl mit einem "L_" davor versehen könnte und das ganze dann als meinen Variablenaufruf benutzte.

Gibt es eine solche Möglichkeit in C#?

Ich bedank mich schonmal im Vorraus für die Hilfe =)

Gruß
norathem

1.552 Beiträge seit 2010
vor 13 Jahren

Hallo norathem,

nein so wie du es gern möchtest gibt es dies nicht.
Dies wurde hier [FAQ] Variablennamen zur Laufzeit zusammensetzen schon mal besprochen

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

2.223 Beiträge seit 2005
vor 13 Jahren

Hallo norathem und Herzlich Willkommen hier im Forum,

dass was du willst lässt sich folgendermaßen Lösen.
wie wäre es zb mit einem Array oder eine List von Labels,

dann kannst du mit einem Index zugreifen und hast alles was du möchtest.

Viele Grüße
Lars

1.552 Beiträge seit 2010
vor 13 Jahren

Oder auch z.B. mit einem Dictionary(TKey,TValue), denn dort kannst du über den TKey, der z.b. vom Typ String ist mit den Namen z.b L_0, L_1,... darauf zugreifen.

Gruß,
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

N
norathem Themenstarter:in
6 Beiträge seit 2010
vor 13 Jahren

Also erstmal Danke für die schnellen Antworten!

Ein Array, ne Liste oder ne HashMap (schätze das ist sowas ähnliches wie dein Dictionary - sorry ich komm von Java, mach noch nicht lange C#) zu benutzten kam mir auch schon in den sinn. Das Problem ist, das ich dann ja, wenn ich das richtig sehe, die Schreibarbeit trotzdem hätte. Denn irgendwo muss ich ja das ganze Manuell füllen.

Naja, manchmal kommt man mit Faulheit halt nicht weiter 😄

Gruß
Lars

Edit:

Hab gerade noch was gefunden in einem der Threads aus dem FAQ das du gepostet hattest:


foreach (Control _ctrl in control.Controls) 
    { 
        if (_ctrl is Label) 
            _ctrl.Text = "gefunden"; // Text des Label's setzen
        else 
            ReversQuery(_ctrl); // Unterelemente durchsuchen
    }  


Damit sollte es eigentlich klappen, da ich ja so auch den Namen des Labels abfragen können und mit meinem String vergleichen kann.

B
48 Beiträge seit 2010
vor 13 Jahren

Dann kannst Du auch Controls.Find verwenden...