委託系列03 委託的作用與意義

2022-09-20 13:33:12 字數 2645 閱讀 3539

分別有武漢人、上海人、廣東人,三種不同城市的學生,問候的口語不一樣,模擬見面打招呼。

/// /// 學生類

///

public class student

public string name

public int classid

public int age

}

public enum usertype

打招呼:

/// /// 問好

///

public void sayhi(usertype type)

console.writeline("你好!");

}

呼叫:

student student = new student()

;student.sayhi(usertype.wuhan);

student.sayhi(usertype.shanghai);

student.sayhi(usertype.guangdong);

/// /// 武漢人打招呼

///

public void sayhiwuhhan()

/// /// 上海人打招呼

///

public void sayhishanghai()

/// /// 廣東人打招呼

///

public void sayhiguangdong()

呼叫:

注意:修改此方法存在風險,函式發生了改變,可能會引起其他的邏輯,需要重複測試

優點:新增通用語句方便,只需要在函式前面新增即可。

缺點:新增一種打招呼方式就需要修改列舉型別和打招呼的函式邏輯,帶來風險。

優點:每個城市的打招呼方法相對獨立,互不干擾。

缺點:新增通用語句麻煩,需要在每個打招呼的函式前面新增。

以上這兩種都有不完美的地方----有沒有既可以沒有那麼多的重複**,也相對穩定的方案呢?--有

sayhiperfect---

傳遞列舉的時候:目的是為了選擇不同的業務邏輯:既然最終都是要選擇業務邏輯的;--就可以傳遞邏輯唄;邏輯是什麼--邏輯其實就行為---行為就是方法---方法的傳遞;就需要把方法當做引數一樣傳遞過來;--委託在例項化的時候,委託就要乙個方法;就可以傳遞乙個委託,把方法放在委託中傳遞過來;

public delegate void sayhidalegate();
/// /// 既沒有重複**-0-也相對穩定的方法---完美方法;

///

public void sayhiperfect(sayhidalegate sayhidalegate)

sayhidalegate sayhidalegate = new sayhidalegate(student.sayhiwuhhan);

student.sayhiperfect(sayhidalegate);

sayhidalegate sayhidalegate1 = new sayhidalegate(student.sayhishanghai);

student.sayhiperfect(sayhidalegate1);

sayhidalegate sayhidalegate2 = new sayhidalegate(student.sayhiguangdong);

student.sayhiperfect(sayhidalegate2);

sayhidalegate sayhidalegate3 = new sayhidalegate(student.sayhibeijing);

student.sayhiperfect(sayhidalegate2);

即使新增了一種新的打招呼方式,只需要新增乙個方法即可,既不會影響其他打招呼的方法**邏輯,也實現了擴充套件。

委託系列08 委託和事件的區別

emsp 案例 通過委託和事件實現相同的動作 public class cat 方式二 miaoaction?invoke 如果不為null 就執行後面的動作 console.writeline this is delegate public class cat 方式二 miaoaction?inv...

委託與事件 閒聊系列(一)

net開發人員對委託與事件應該不陌生,它們的在程式中的應用還是挺廣泛的。對於剛開始接觸或接觸時間不太長的朋友來說,這兩個概念既熟悉又陌生。之所以說熟悉,因其無處不在 而之所以陌生則是因為對其的理解始終停留在表面,無法更深入的領悟。你是否有過呆在宿舍玩遊戲讓同學幫忙帶飯的經歷?是否有過讓同學代收快遞的...

委託 C 委託 delegate 的介紹與使用

委託 delegate 即委託別人辦事 相當於 中介 委託某個方法來實現具體的功能。委託是一種引用型別,是方法的抽象,宣告時與方法相似,但不能稱之為方法。它儲存的是一系列具有相同引數和返回型別的方法位址。呼叫委託時,委託包含的所有方法都將被執行。委託在使用時遵循三步走的原則,即定義宣告委託 例項化委...