靜態方法無需物件參考;實例方法需提供物件:
MathClass obj = new MathClass();
myDelegate Operation = new myDelegate(obj.Power);
using System;
public class DelegateClass
{
delegate long myDelegate(int i, int j);
public static void Main(string[] args)
{
MathClass mathObj = new MathClass();
myDelegate Operation = new myDelegate(mathObj.Add);
Console.WriteLine("Call to Add method through delegate");
long l = Operation(10, 20);
Console.WriteLine("Sum of 10 and 20 is " + l);
Console.WriteLine("Call to Multiply method thru delegate");
Operation = new myDelegate(mathObj.Multiply);
l = Operation(1639, 1525);
Console.WriteLine("1639 multiplied by 1525 equals " + l);
}
}
event 關鍵字 + 委派型別欄位+=/-= 訂閱/退訂)public delegate void CustomEventHandler(object sender, EventArgs e);
public event CustomEventHandler CustomEvent;
using System;
class TestClass
{
static void Main(string[] args)
{
EventClass myEventClass = new EventClass();
myEventClass.CustomEvent += new EventClass.CustomEventHandler(CustomEvent1);
myEventClass.CustomEvent += new EventClass.CustomEventHandler(CustomEvent2);
myEventClass.InvokeEvent();
myEventClass.CustomEvent -= new EventClass.CustomEventHandler(CustomEvent2);
myEventClass.InvokeEvent();
}
private static void CustomEvent1(object sender, EventArgs e)
=> Console.WriteLine("Fire Event 1");
private static void CustomEvent2(object sender, EventArgs e)
=> Console.WriteLine("Fire Event 2");
}
public class EventClass
{
public delegate void CustomEventHandler(object sender, EventArgs e);
public event CustomEventHandler CustomEvent;
public void InvokeEvent()
=> CustomEvent(this, EventArgs.Empty);
}
輸出:
Fire Event 1
Fire Event 2
Fire Event 1