C# String in Variablenname umwandeln

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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.


greenvbuser 
Fragesteller
 15.06.2013, 21:30

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?

0
Mickeyman  16.06.2013, 02:06
@greenvbuser

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

1

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