C# 从参数类型派生方法返回类型

C# 从参数类型派生方法返回类型,c#,function,return-value,func,C#,Function,Return Value,Func,我想知道是否有可能创建这样的方法: public var test (var value) { // ... return value; } 意思是,如果value是bool,我想返回bool,如果value是string,我想返回string,等等。根据您的最终声明,您想返回在输入中接收到的相同类型,因此,您可以使用通用函数来完成 public T test<T>(T input) { return input; } void Main() {

我想知道是否有可能创建这样的方法:

public var test (var value)
{
    // ...
    return value;
}  

意思是,如果
value
bool
,我想返回
bool
,如果
value
string
,我想返回
string
,等等。

根据您的最终声明,您想返回在输入中接收到的相同类型,因此,您可以使用通用函数来完成

public T test<T>(T input)
{
    return input;
}

void Main()
{
    Console.WriteLine(test(true));
    Console.WriteLine(test(1));
    Console.WriteLine(test("Steve"));
}
公共T测试(T输入)
{
返回输入;
}
void Main()
{
Console.WriteLine(test(true));
控制台写入线(测试(1));
控制台写入线(测试(“史蒂夫”);
}

如果您的返回类型应该与
值的类型相同,您可以创建一个带有泛型参数的方法:

public T Test<T>(T value)
{
    return value;
}
公共T检验(T值)
{
返回值;
}
了解有关泛型的更多信息

您提到您也可以使用
dynamic
关键字来执行此操作,但我建议不要在这种情况下使用
dynamic
。在某些特殊情况下,
dynamic
应该在泛型之上使用,但它主要在处理COM互操作时变得相关。

我找到了一种方法:

public dynamic GetAnything(dynamic val)
{
    return val;
}

是否要返回给定参数的
类型
?tnx但我发现了一种使用动态类型的方法,所以知道问题是哪种方法更好?通用还是动态?如果更好意味着性能更好,那么动态将更慢,因为它们使用运行时调用。