dcp*_*dcp 164
我喜欢将委托视为"指向函数的指针".这可以追溯到C天,但这个想法仍然存在.
这个想法是你需要能够调用一段代码,但是你要调用的那段代码直到运行时才知道.所以你为此目的使用"委托".代表们可以为事件处理程序之类的东西派上用场,例如,根据不同的事件,您可以根据不同的事件执行不同的操作.
以下是您可以查看的C#参考:
例如,在C#中,假设我们有一个我们想要进行的计算,并且我们想要使用一种在运行时之前我们不知道的不同计算方法.所以我们可能有几个这样的计算方法:
public static double CalcTotalMethod1(double amt)
{
return amt * .014;
}
public static double CalcTotalMethod2(double amt)
{
return amt * .056 + 42.43;
}
Run Code Online (Sandbox Code Playgroud)
我们可以像这样声明一个委托签名:
public delegate double calcTotalDelegate(double amt);
Run Code Online (Sandbox Code Playgroud)
然后我们可以声明一个方法,将委托作为参数,如下所示:
public static double CalcMyTotal(double amt, calcTotalDelegate calcTotal)
{
return calcTotal(amt);
}
Run Code Online (Sandbox Code Playgroud)
我们可以调用CalcMyTotal传递我们想要使用的委托方法的方法.
double tot1 = CalcMyTotal(100.34, CalcTotalMethod1);
double tot2 = CalcMyTotal(100.34, CalcTotalMethod2);
Console.WriteLine(tot1);
Console.WriteLine(tot2);
Run Code Online (Sandbox Code Playgroud)
Mla*_*dic 18
委托只是一个函数指针.
只需让您分配您希望运行代理的方法即可.然后在代码中,您可以通过Invoke调用该方法.
一些代码来演示(从内存写这个语法可能会关闭)
delegate void delMyDelegate(object o);
private void MethodToExecute1(object o)
{
// do something with object
}
private void MethodToExecute2(object o)
{
// do something else with object
}
private void DoSomethingToList(delMyDelegate methodToRun)
{
foreach(object o in myList)
methodToRun.Invoke(o);
}
public void ApplyMethodsToList()
{
DoSomethingToList(MethodToExecute1);
DoSomethingToList(MethodToExecute2);
}
Run Code Online (Sandbox Code Playgroud)