单个代表如何指向具有不同签名的多个功能?
假设我有一个签名不同的两个函数.
private int Add(int x,int y)
{
return (x+y);
}
private int MultiplyByTwo(int x)
{
return (x*2);
}
Run Code Online (Sandbox Code Playgroud)
请告诉我是否可以与单个代表指向一次添加和多个两个不同的功能,函数将根据参数调用.
请与代码讨论,并告诉我如何使用func <>委托执行相同的工作.
谢谢
这是不可能的.委托的要点是作为强类型函数指针(松散地放置),并且运行时也不会根据参数进行任何猜测.如果这是您正在寻找的功能类型,您可能会对dynamicC#4 中的关键字感兴趣.
所有委托都从一个被调用的公共委托继承Delegate,如果这是您正在寻找的功能.
static void Main(string[] args)
{
Delegate method1 = new Action<string>(PrintOneString);
Delegate method2 = new Action<string, string>(PrintTwoString);
method1.DynamicInvoke("Hello");
method2.DynamicInvoke("Hello", "Goodbye");
}
public static void PrintOneString(string str)
{
Console.WriteLine(str);
}
public static void PrintTwoString(string str1, string str2)
{
Console.WriteLine(str1);
Console.WriteLine(str2);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4322 次 |
| 最近记录: |