Ich habe viele Fragen durchgesehen, die ähnlich sind, aber keiner von ihnen hat wirklich berührt, was ich genau machen möchte. Was ich versuche zu tun ist, von einer externen Quelle eine Liste von Variablen lesen, die auch ihre Datentyp in ein String-Array umfassen:Methode mit mehreren Rückgabetypen
Beispiel: Das sind Objekte in einem Wörterbuch
ID/Key Type Value/Data;
varName1 bool true;
varName2 string str;
varName3 int 5;
speichere ich dann als Objekte mit mehreren Strings, wobei die ID auch als Schlüssel dient.
Ich möchte jetzt eine Methode erstellen, die eine switch-Anweisung verwendet, die die Zeichenfolge in den richtigen Datentyp konvertiert und sie zurückgibt, ohne dass beim Methodenaufruf irgendetwas angegeben werden muss. Die Funktion sollte wie folgt aussehen:
public ??? Method(string key)
{
if(dictionary.ContainsKey(ID))
{
Var temp = dictionary[ID];
switch (temp.Type)
{
case "bool":
return Convert.ToBoolean(temp.Value);
case "int"
return Convert.ToInt(temp.Value);
case "string"
return temp.Value;
}
}
return "NULL";
}
Der Methodenaufruf wie folgt aussehen sollte: Ich habe etwas verpasst
int x = Method(string key);
string word = Method(string key);
boolean isTrue = Method(string key);
Vielleicht, aber ich habe noch etwas zu finden, die wirklich etwas tut, ganz so was. Alle Gedanken darüber sind ebenfalls willkommen.
Sorry, keine solche Sache in C#. Eine Methode hat einen festen Rückgabetyp. Sie könnten 'object' als Rückgabetyp verwenden, aber Sie müssen ihn umwandeln. – adv12
Sie müssten die Methode generisch machen, damit sie funktioniert. Und es würde am Ende aussehen wie "string word = Methode (Schlüssel)", wenn Sie es verwendet haben. Außerdem müsstest du 'bool?' Und 'int?'da Sie' null' zurückgeben wollen, wenn der Schlüssel nicht gefunden wird. –
juharr
Wenn Ihre Werte als "Objekt" gespeichert wurden, können Sie '(T) value' verwenden. Was hält Sie von 'string word = (string) Methode (string key);', gegeben, Methode gibt 'object' zurück –