【发布时间】:2016-04-20 07:34:41
【问题描述】:
我已经查看了许多与此类似的问题,但没有一个真正涉及到我究竟想要做什么。我要做的是从外部源读取变量列表,这些变量也将它们的数据类型包含到字符串数组中:
例子:
ID/Key Type Value/Data;
varName1 bool true;
varName2 string str;
varName3 int 5;
然后我将这些对象作为包含多个字符串的对象存储到字典中,ID 也用作键。
我现在要做的是创建一个使用 switch 语句的方法,该语句将字符串转换为正确的数据类型,并返回它而无需在方法调用中指定任何内容。该函数应如下所示:
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";
}
方法调用应该如下所示:
int x = Method(string key);
string word = Method(string key);
bool isTrue = Method(string key);
也许我错过了一些东西,但我还没有找到真正能做到这样的东西。也欢迎任何和所有关于此的想法。
【问题讨论】:
-
对不起,C# 中没有这样的东西。方法具有固定的返回类型。您可以使用
object作为您的返回类型,但您必须强制转换。 -
您必须使该方法具有通用性才能使其正常工作。当你使用它时,它最终看起来像
string word = Method<string>(key)。此外,您还必须执行bool?和int?,因为您想在找不到密钥时返回null。 -
如果您的值存储为
Object,您可以使用(T)value。是什么阻止了你string word = (string)Method(string key);,给定,方法返回object -
dynamic怎么样? -
你打算如何处理方法的返回值?
标签: c# generics methods return