动态返回类型的函数

时间:2009-04-13 16:14:03

标签: c#

如何根据参数类型创建一个具有动态返回类型的函数?

喜欢

protected DynamicType Test(DynamicType type)
{

return ; 

}

5 个答案:

答案 0 :(得分:27)

你必须使用泛型。例如,

protected T Test<T>(T parameter)
{

}

在此示例中,“<T>”告诉编译器它表示类型的名称,但您不知道在创建此函数的上下文中是什么。所以你最终会把它称为......

int foo;

int bar = Test<int>(foo);

答案 1 :(得分:19)

虽然接受的答案很好,但自写完以来已经有两年多了,所以,我应该补充说你可以使用:

protected dynamic methodname(dynamic input)
{
    return input;
}

输入将以相同的类型返回,您无需将该方法称为通用。

<强>参考:
https://msdn.microsoft.com/en-us/library/dd264736.aspx

答案 2 :(得分:6)

实际上,假设您有一组已知的参数和返回类型,可以通过简单的重载来处理它:

protected int Test(string p) {   ...  }
protected string Test(DateTime p ) { .... }

答案 3 :(得分:1)

然后你需要使用泛型。

protected T Test(T type) {

return type;

}

答案 4 :(得分:1)

C#不是动态语言。要在C#中解决这个问题,您可以返回一个通用对象,然后将类型转换为您认为值应该是什么 - 不推荐。您也可以返回一个接口,这样您就不会真正关心特定的类实例。正如其他人指出的那样,你也可以使用泛型。这实际上取决于您在函数体内需要/想要做什么,因为上面的所有方法都有其自身的局限性。