在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
參數將事件的調用者轉換為具體的類型,然后進行相關操作。