c# - 委托(delegate)的目的

标签 c# .net delegates

<分区>

重复:

Difference between events and delegates and its respective applications

What are the advantages of delegates?

Where do I use delegates?

我想知道委托(delegate)的目的是什么。我没怎么用过它们,也想不出什么东西。

在我的类(class)中,写到委托(delegate)是所有符合其签名的方法的蓝图。

此外,您可以向一个委托(delegate)添加多个方法,然后它们将按照添加的顺序依次执行。这可能只对影响局部变量的方法或不返回任何值的方法有用。

我读过 C# 将事件实现为委托(delegate),记录如下:

//Summary: Represents the method that
will handle an event that has no event
data.
 
//Parameters:

//sender: The source of the event.
 
//e: An System.EventArgs that contains no event data.

[Serializable]

[ComVisible(true)] 

public delegate void EventHandler(object sender, EventArgs e);

不过,这还是有点令人困惑。有人可以举一个很好的、有用的例子来说明这个概念吗?

最佳答案

是的,

你快到了。委托(delegate)指的是要调用的方法或函数。 .NET 使用事件来表示.. 当有人按下这个按钮时,我要你执行这段代码。

例如,在使用 GPS 应用程序时:

public delegate void PositionReceivedEventHandler(double latitude, double longitude);

这表示该方法必须将两个 double 作为输入,并返回 void。当我们开始定义事件时:

public event PositionReceivedEventHandler PositionReceived;  

这意味着 PositionRecieved 事件调用了一个与 我们定义的 PositionReceivedEventHandler 委托(delegate)。所以当你这样做的时候

PositionRecieved += new PositionReceivedEventHandler(method_Name);

method_Name 必须与委托(delegate)匹配,以便我们知道如何执行该方法,它需要什么参数。例如,如果您使用 Visual Studio 设计器向按钮添加一些事件,它将全部在需要对象和 EventArgs 参数的委托(delegate)上工作。

希望对一些人有所帮助...

关于c# - 委托(delegate)的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/687626/

相关文章:

将控件添加到窗体时,应用程序的 C# 加载项(通过 COM)卡住?

c# - 修改 .NET 项目文件和引用属性

ios - 澄清 UIViewController<Delegate> *_variable; iAdSuite 选项卡式示例 (iOS) 中的声明

qt - 使用 TableView 作为 ListView 委托(delegate)

c# - 我的 Dropbox 上的嵌入式 Raven DataDirectory 不能 100% 工作?

c# - 一个单独的线程是否需要它自己的 VersionControlServer 实例才能与另一个线程同时工作?

c# - 如何使用 Moq 验证字符串数组中的值是否已设置

c# - 如何跨操作系统接受具有指定内容类型的文件

c# - 多对多映射未创建正确的表

c# 是否可以创建这样的委托(delegate)?