委派:用於定義和引用方法。
事件:允許一個對象通知其他對象發生了特定的動作。
委派是一種類型,它代表對方法的引用。可以用於將方法作為參數傳遞給其他方法,或者用於定義和訪問委派的方法。
定義:可以使用 delegate
關鍵字定義委派,指定方法的簽名(返回類型和參數列表)
委派的實例化和使用:可以實例化委派並將方法指派給它。然後,可以使用委派來調用這個方法,就好像直接調用方法一樣。
程式範例(使用委派實現簡單的計算器):
// 定義一個委派,該委派可以接受兩個整數並返回整數
delegate int CalculatorDelegate(int x, int y);
class Program
{
static int Add(int a, int b)
{
return a + b;
}
static int Subtract(int a, int b)
{
return a - b;
}
static void Main()
{
// 創建委派實例,並將方法指派給它
CalculatorDelegate addDelegate = Add;
CalculatorDelegate subtractDelegate = Subtract;
int result1 = addDelegate(5, 3); // 調用 Add 方法
int result2 = subtractDelegate(8, 2); // 調用 Subtract 方法
Console.WriteLine("加法結果:" + result1);
Console.WriteLine("減法結果:" + result2);
}
}```
事件是一種機制,用於通知一個對象(發布者)的狀態或動作已經發生,以便其他對象(訂閱者)可以對此事件做出響應。
可以使用 event
關鍵字定義事件,通常在類別中聲明事件。
事件的訂閱和解除訂閱:對象可以訂閱事件,以便在事件觸發時執行相應的處理程序。還可以解除對事件的訂閱。
程式範例(使用事件實現簡單的鬧鐘):
// 定義鬧鐘類別
class AlarmClock
{
// 定義事件
public event EventHandler Alarm;
// 模擬鬧鐘觸發事件
public void TriggerAlarm()
{
Console.WriteLine("鬧鐘響了!");
OnAlarm(); // 觸發事件
}
// 處理事件的方法
protected virtual void OnAlarm()
{
Alarm?.Invoke(this, EventArgs.Empty);
}
}
class Program
{
static void Main()
{
AlarmClock clock = new AlarmClock();
// 訂閱事件,指定處理程序
clock.Alarm += (sender, e) =>
{
Console.WriteLine("時間到了,該起床了!");
};
// 模擬鬧鐘觸發
clock.TriggerAlarm();
}
}```
在此範例中,我們定義了一個 AlarmClock 類別,其中包含一個事件 Alarm。當鬧鐘觸發時,我們使用 OnAlarm 方法來觸發事件。然後,我們在 Main 函式中訂閱了該事件,並指定了事件處理程序。當鬧鐘觸發時,事件處理程序會執行,顯示消息。
這個範例展示了如何使用事件機制實現簡單的鬧鐘,
鬧鐘:事件的發布者。
事件處理程序:事件的訂閱者。
當鬧鐘觸發時訂閱者會收到通知並執行相應的處理程序。
到今天已經是第10天了,鐵人賽旅程的三分之一
以前看看大佬們寫文章的時候,都是十分嚮往
自己來寫的時候,才知道是壓力與時間並排的,
常常在想自己書寫的時候跟 一般閱讀書籍的差別性
是不是沒有什麼差別? 我的文章真的能幫的到人嗎?
想要挑戰自我,但是自己寫的會做的真的好嗎?
可能是第一次自我的挑戰,也應該是自己準備的不夠充足
想要為自己求進步 而報名的鐵人賽,但自己好像報錯組了
應該比較像是 自我挑戰
雖然沒有大佬們的文章精闢,但我期望自己力求進步
努力堅持30天,並在一次一次的學習中,新增與修改自己未來與過去的文章
期望自己的發文可以以更好的型態流傳給之後看到的每一個人
或許之後的人看到的每天的版本會有稍微的不一樣
這可能是我覺得哪邊缺少了 或希望改變什麼修正的
不論好壞,也期望其他人可以給予我建議
讓我不斷進步前進下去
今天是第十天,三分之一的路程
期望挑戰30天持續更新成功 ~ DAY10