从参数类型派生方法 return 类型
Derive method return type from parameter type
我想知道是否可以创建这样的方法:
public var test (var value)
{
// ...
return value;
}
意思是,如果value
是一个bool
,我想return一个bool
,如果value
是一个string
,我要return一个string
等
根据您的最终陈述,您希望 return 与您在输入中收到的类型相同,因此,您可以使用通用函数
public T test<T>(T input)
{
return input;
}
void Main()
{
Console.WriteLine(test(true));
Console.WriteLine(test(1));
Console.WriteLine(test("Steve"));
}
如果您的 return 类型应该与 value
参数的类型相同,您可以创建一个带有通用参数的方法:
public T Test<T>(T value)
{
return value;
}
了解有关泛型的更多信息here。
您提到您也可以使用 dynamic
关键字来执行此操作,但我建议不要在这种情况下使用 dynamic
。在某些特殊情况下 dynamic
应该用于泛型,但它主要在处理 COM 互操作时变得相关。
我找到了一个方法:
public dynamic GetAnything(dynamic val)
{
return val;
}
我想知道是否可以创建这样的方法:
public var test (var value)
{
// ...
return value;
}
意思是,如果value
是一个bool
,我想return一个bool
,如果value
是一个string
,我要return一个string
等
根据您的最终陈述,您希望 return 与您在输入中收到的类型相同,因此,您可以使用通用函数
public T test<T>(T input)
{
return input;
}
void Main()
{
Console.WriteLine(test(true));
Console.WriteLine(test(1));
Console.WriteLine(test("Steve"));
}
如果您的 return 类型应该与 value
参数的类型相同,您可以创建一个带有通用参数的方法:
public T Test<T>(T value)
{
return value;
}
了解有关泛型的更多信息here。
您提到您也可以使用 dynamic
关键字来执行此操作,但我建议不要在这种情况下使用 dynamic
。在某些特殊情况下 dynamic
应该用于泛型,但它主要在处理 COM 互操作时变得相关。
我找到了一个方法:
public dynamic GetAnything(dynamic val)
{
return val;
}