c# - 具有多种返回类型的方法

标签 c# generics methods return

我浏览了很多与此类似的问题,但没有一个真正触及我真正想做的事情。我想做的是从外部源读取变量列表,这些变量也将其数据类型包含到字符串数组中:

示例:

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# 7 中,您可以选择从方法中返回多个值,如下所示:

public (string SomeString, int SomeInt) DoSomething() { ... }

您可以获得这样的值:

var result = DoSomething();
Console.WriteLine(result.SomeString);
Console.WriteLine(result.SomeInt.ToString());

或者

(var someString, var someInt) = DoSomething();
Console.WriteLine(someString);
Console.WriteLine(someInt.ToString());

这在元组的表面下工作,并且您不仅限于 2 个值。我不知道您可以返回多少个值,但我建议当您需要返回那么多值时,创建一个类。 更多信息:https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/

关于c# - 具有多种返回类型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34798681/

相关文章:

c# - 如何防止在类准备就绪之前调用该类的方法?

c# - 如何在 C# 控制台应用程序中返回一个简单的 int 值

c# - 当我的 View 模型有构造函数时发布数据不起作用

具有可触发初始化的 C# 单例模式

c# visual studio 2015,Symantec 删除 setup.exe 文件并阻止安装

跨依赖 Java 类型的 Java 通用参数

c# - 动态 GridView AllowPaging 在 DataBind 上返回错误

generics - F#:如何对类型值进行模式匹配?

java - 混淆自动装箱与泛型的使用

Javac 声称采用 Character[][] 的方法在泛型类中不存在