我有Method1,Method2和Method3。
Method1返回Type int。 Method2返回Type string。
当Method3根据method1或method2的返回类型获取int或string参数时。
public void Method3 (ParameterType parm) { logic... }
问题是: 如何根据Method1和Method2的类型切换传递的ParameterType。这当然是问题的简化版本。实际上,有许多方法可以返回不同类型的值。基于当前调用的方法,例如Method1,如何提取其类型,然后用新类型替换Method3的ParameterType。
答案 0 :(得分:3)
您可以定义通用方法,例如
public void Method3<T>(T parm)
{
// ...
}
您只需调用该方法并传递一个参数,该参数的类型即可为该调用修复T
。这意味着T
可以是任何类型,因此方法中的代码必须以适用于任何类型的方式使用parm
。
您可以将某些约束应用于通用类型参数,例如它必须是或继承一个特定的类,必须实现一个特定的接口或必须有一个无参数的构造函数。尽管如此,int
和string
都没有约束力。
如果您不能为可能作为参数传递的所有类型编写公共代码,则不能选择单个通用方法。您必须重载该方法并编写两个或多个泛型和/或非泛型方法,其参数覆盖您希望能够接受的各种类型的参数,例如。
public void Method3<T>(T parm) where T : class
{
// ...
}
public void Method3(int parm)
{
// ...
}
public void Method3(double parm)
{
// ...
}
答案 1 :(得分:1)
它被称为重载:
public void Method3 (int parm) { logic... }
public void Method3 (string parm) { logic... }
public void Foo(){
Method3(Method1());
Method3(Method2());
}