C# String in Variablenname umwandeln
Hey zusammen.
Ich habe einen Langen String gesplittet. Der erste Teil ist ein befahl, der zweite eine variable und der dritte Teil der neue Wert für die Variable. Nun möchte ich nicht alles mit If erledigen. Deshalb meine frage: kann ich C# irgendwie sagen, dass splittedstring[1] eine vorhandene variable ist und er diese bearbeiten soll? Und kann ich machen, dass ein Fehler der z.B. dadurch entsteht dass die variable nicht vorhanden ist in ein Label umgeleitet wird?
Danke schonmal.
3 Antworten
Variablennamen werden während des Kompiliervorgangs verwendet und später, also im fertigen Programm, nicht mehr. Da ist das dann mit Speicheradressen gelöst, weil dein Prozessor mit Strings nichts anfangen kann. Somit kannst du keine Variablennamen erstellen, während das Programm ausgeführt wird, weil deine CPU schlicht nichts damit anfangen kann. Du kannst aber sog. Assoziative Arrays verwenden; die sollten ziemlich genau das erledigen können, was du brauchst. Mit C++ kann man da den Datentyp std::map verwenden:
std::map<std::string, int> aA;
aA["Variable1"] = 42;
int i = aA["Variable1];
Ich hoffe mal, das stimmt soweit... jedenfalls weiß ich nicht genau, wie das in C# geht.
Das ist möglich. Musst dir mal Reflection anschauen: http://www.codeproject.com/Articles/17269/Reflection-in-C-Tutorial
Aber ob sich der Aufwand für dich dabei lohnt, ist fraglich. Wie der Muffin schon meinte, sind Key/Value-Container meistens eine gute Wahl und erlauben die auch mehr Kontrolle beim Zugriff.
Ja, dazu machst du eine Liste, bei dem die Werte Delegates sind. Denen kannst du zur Laufzeit eine Methode zuweisen, die du dann auch wie eine normale Methode aufrufen kannst.
Zur einfach Verwendung kannst du auch das Action-Delegate verwenden. Das ist ein vordefiniertes Delegate: /Areas/Epx/Content/500.htm?aspxerrorpath=/de-de/library/vstudio/system.action.aspx
Keine Programmiersprache, die ich kenne unterstützt so etwas direkt.
Du kannst aber selbst etwas in der Richtiung machen, wie eine Liste mit Key-Value-Paaren
Ok. Danke. Dann habe ich eine kleine weitere Frage: kann ich denn per String eine FUNKTION aufrufen? Also quasi wenn ich in einer Textbox "readText" eingebe, dass dann automatisch die Funktion readText() aufgerufen wird?