动态返回类型的函数

Dev*_*nia 14 c#

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

喜欢

protected DynamicType Test(DynamicType type)
{

return ; 

}
Run Code Online (Sandbox Code Playgroud)

Ada*_*son 28

你必须使用泛型.例如,

protected T Test<T>(T parameter)
{

}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,' <T>'告诉编译器它表示一个类型的名称,但你不知道在创建这个函数的上下文中是什么.所以你最终称之为......

int foo;

int bar = Test<int>(foo);
Run Code Online (Sandbox Code Playgroud)


Wil*_*Wil 22

虽然接受的答案是好的,但它已经写了两年多了,所以,我应该补充一点,你可以使用:

protected dynamic methodname(dynamic input)
{
    return input;
}
Run Code Online (Sandbox Code Playgroud)

输入将作为相同类型返回,您无需将该方法作为通用方法调用.

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

  • 值得注意的是,接受的答案也可以使用泛型类型推断,允许您将其称为"Test(foo)",而不必明确指定泛型参数. (4认同)

Jam*_*ran 6

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

protected int Test(string p) {   ...  }
protected string Test(DateTime p ) { .... }
Run Code Online (Sandbox Code Playgroud)