可能重复:
您何时在C#中使用委托?
代表们的目的
我看到很多关于代表使用的问题.我仍然不清楚你在哪里和为什么使用代理而不是直接调用方法.
我多次听过这个短语:"然后可以将委托对象传递给可以调用引用方法的代码,而不必在编译时知道将调用哪个方法."
我不明白这句话是怎么回事.
我写了以下例子.假设您有3个具有相同参数的方法:
public int add(int x, int y)
{
int total;
return total = x + y;
}
public int multiply(int x, int y)
{
int total;
return total = x * y;
}
public int subtract(int x, int y)
{
int total;
return total = x - y;
}
Run Code Online (Sandbox Code Playgroud)
现在我宣布一个代表:
public delegate int Operations(int x, int y);
Run Code Online (Sandbox Code Playgroud)
现在我可以更进一步声明一个处理程序来使用这个委托(或你的委托直接)
致电代表:
MyClass f = new MyClass();
Operations p = new Operations(f.multiply);
p.Invoke(5, 5);
Run Code Online (Sandbox Code Playgroud)
或者使用处理程序调用
f.OperationsHandler = …Run Code Online (Sandbox Code Playgroud) 我之前曾问过一个关于代表的问题,是否有人必须拥有必须使用代表的场景?这如何改善我的C#代码?
就像我使用它的许多场景一样,我似乎总是可以围绕它编程.
我有点困惑,我知道委托就像函数指针一样,它们用于将函数作为参数传递给方法.
这如何适合事件模型?
呼叫:
myButton.OnClick += new .....();
Run Code Online (Sandbox Code Playgroud)
在事件发生时,内部只是将方法/函数作为参数传递,并且所有订阅者都会收到有关该事件的通知吗?