gpt4 book ai didi

c# - 委托(delegate)和事件

转载 作者:行者123 更新时间:2023-11-30 15:46:57 26 4
gpt4 key购买 nike

我创建了一个非常简单的虚拟程序来理解委托(delegate)和事件。在我下面的程序中,我很简单地调用了一个方法。当我调用一个方法时,在委托(delegate)和事件的帮助下会自动调用五个方法。

请看看我的程序,让我知道哪里错了哪里对,因为这是我第一次使用委托(delegate)和事件。

using System;

namespace ConsoleApplication1
{
public delegate void MyFirstDelegate();

class Test
{
public event MyFirstDelegate myFirstDelegate;

public void Call()
{
Console.WriteLine("Welcome in Delegate world..");
if (myFirstDelegate != null)
{
myFirstDelegate();
}
}
}

class AttachedFunction
{
public void firstAttachMethod()
{
Console.WriteLine("ONE...");
}
public void SecondAttachMethod()
{
Console.WriteLine("TWO...");
}
public void thirdAttachMethod()
{
Console.WriteLine("THREE...");
}
public void fourthAttachMethod()
{
Console.WriteLine("FOUR...");
}
public void fifthAttachMethod()
{
Console.WriteLine("FIVE...");
}
}

class MyMain
{
public static void Main()
{
Test test = new Test();
AttachedFunction attachedFunction = new AttachedFunction();
test.myFirstDelegate += new MyFirstDelegate(attachedFunction.firstAttachMethod);
test.myFirstDelegate += new MyFirstDelegate(attachedFunction.SecondAttachMethod);
test.myFirstDelegate += new MyFirstDelegate(attachedFunction.thirdAttachMethod);
test.myFirstDelegate += new MyFirstDelegate(attachedFunction.fourthAttachMethod);
test.myFirstDelegate += new MyFirstDelegate(attachedFunction.fifthAttachMethod);

test.Call();
Console.ReadLine();
}
}
}

最佳答案

事件是使用委托(delegate)来实现的。也就是说,按照惯例,事件采取以下形式:

 void EventHandler(Object sender, EventArgs args);

EventHandler实际上是.Net 中定义的委托(delegate)。 EventArgs 是 .Net 中的一个类,用作传递附加信息的占位符。如果您有额外的信息,您将创建一个派生自 EventArgs 并包含额外数据属性的类;因此,您可以像这样创建自己的委托(delegate):

void MyEventHandler(Object sender, MyEventArgs args);

Microsoft 有一个关于事件的教程 here还描述了定义和引发事件 here

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com