c#

c# sender在委托中如何使用

小樊
85
2024-07-26 17:32:12
栏目: 编程语言

在C#中,可以使用委托来将方法作为参数传递给其他方法,以实现回调和事件处理等功能。在委托中,可以使用sender参数来指示方法的调用者是谁。

例如,定义一个简单的委托和一个包含该委托的事件:

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

public class MyClass
{
    public event MyEventHandler MyEvent;

    public void OnMyEvent()
    {
        MyEvent?.Invoke(this, EventArgs.Empty);
    }
}

在上面的例子中,定义了一个委托MyEventHandler,然后在MyClass类中定义了一个事件MyEvent,当调用OnMyEvent方法时,会触发MyEvent事件并传递this作为sender参数。

在订阅该事件的地方,可以使用sender参数来获取触发事件的对象:

public class Program
{
    public static void Main()
    {
        MyClass myClass = new MyClass();
        myClass.MyEvent += MyEventHandlerMethod;
        
        myClass.OnMyEvent();
    }

    public static void MyEventHandlerMethod(object sender, EventArgs e)
    {
        MyClass myClass = (MyClass)sender;
        Console.WriteLine("Event triggered by: " + myClass.GetType().Name);
    }
}

MyEventHandlerMethod方法中,可以使用sender参数将事件的调用者转换为具体的类型,然后进行相关操作。

0
看了该问题的人还看了