C#中方法的变量返回类型

san*_*p22 10 c# multiple-variable-return

我想给一个方法一个参数,我希望我的方法通过查看参数返回数据.数据可以是boolean,string,int等类型.如何从方法返回变量类型?我不想返回一个对象类型,然后将其转换为另一种类型.例如:

BlaBla VariableReturnExampleMethod(int a)
{
    if (a == 1)
        return "Demo";
    else if (a == 2)
        return 2;
    else if (a == 3)
        return True;
    else
        return null;
}
Run Code Online (Sandbox Code Playgroud)

我想要的原因是我有一个方法从数据库中读取一行的选定列.列的类型不相同,但我必须返回每列的信息.

Jon*_*eet 17

如何从方法返回变量类型?我不想返回一个对象类型,然后将其转换为另一种类型.

那基本上你要做的就是这个.或者,如果您使用的是C#4,则可以创建返回类型dynamic,这将允许转换隐式:

dynamic VariableReturnExampleMethod(int a)
{
    // Body as per question
}

...

// Fine...
int x = VariableReturnExampleMethod(2);

// This will throw an exception at execution time
int y = VariableReturnExampleMethod(1);
Run Code Online (Sandbox Code Playgroud)

从根本上说,您可以指定类型以使编译器知道预期的内容.如果仅在执行时知道类型,那该怎么办?dynamic版本工作的原因是它基本上告诉编译器将其正常工作推迟执行时间 - 因此您将失去正常的安全性,这将使第二个示例在编译时失败.

  • 我喜欢 Jon Skeet 的回答如何在回答后的 1 分钟内获得三个 +1 - 甚至在他详细阐述之前。一定很不错:) (2认同)
  • @Tim 更像 :-) 我认为他没有看到他一天中获得的大部分 +1 的好处,据我所知,他已经达到了最大值。 (2认同)