.Net罕見成績之C#中的拜托。本站提示廣大學習愛好者:(.Net罕見成績之C#中的拜托)文章只能為提供參考,不一定能成為您想要的結果。以下是.Net罕見成績之C#中的拜托正文
有同伙說拜托和C++中的函數指針很像,然則二者真的有差異。在C++中,函數指針不是類型平安的,它所指向的是內存中的某一個地位,然則我們沒有方法斷定這個指針現實指向的是甚麼,關於參數和前往類型更難以斷定了。然則.NET中的拜托則完整分歧,它是類型比擬平安的類,我們很明確的曉得拜托界說的前往類型和參數類型。它不只包括了辦法的援用,並且包括了辦法的援用。上面經由過程一段代碼給年夜家分享下對拜托的懂得:
甚麼是拜托
在現實的開辟進程中,有時某個辦法履行的操作其實不是針對數據停止的,而是針對另外一個辦法,然則這個辦法在編譯時又沒法得知,只能在運轉時才曉得。假如是針對數據做操作,只需將數據作為辦法的參數傳入便可,那末針對辦法做操作,很顯著將辦法作為參數傳入便可,聽起來切實其實很奇異,然則須要先接收這個實際,然後從應用中去領會它的寄義。上面舉一個例子(請諒解我的英語 ,my english is poor!),如許一個場景:牙婆給菇涼或許小伙引見對象,假如是對象是男的,菇涼就說出她的接洽方法,假如是女的,小伙就說出他的接洽方法(PS:我們這裡都是正常的性取向)。
看一下代碼圖
在定名空間裡,界說一個拜托,和類是平級的
public delegate string GetTelphone();
//用來獲得接洽方法的。
概述中提到,拜托可以界說前往類型和參數類型,那末這個拜托的前往類型就是string,無參的。
持續。。。。
牙婆類:
/// <summary> /// 牙婆 /// </summary> class MeiPo { public string Sex { get; set; } public void GetTel(GetTelphone getTelphone) { Console.WriteLine(getTelphone.Invoke()); } }
可以看到,GetTel辦法的參數是一個拜托類型的,和普通的根本類型和罕見援用類型援用方法一樣應用。然後再辦法體履行拜托辦法,輸入成果。
菇涼類:
/// <summary> /// 菇涼 /// </summary> class Girl { public string GetGirlTel() { return "獲得菇涼的德律風"; } }
小伙類:
/// <summary> /// 男屌絲 /// </summary> class DiaoSi { public string GetBoyTel() { return "獲得男屌絲的德律風"; } }
最初上測試類
static void Main(string[] args) { var redMun = new MeiPo {Sex = "男"}; var del= new GetTelphone(new Girl().GetGirlTel); if(redMun.Sex=="女") del = new GetTelphone(new DiaoSi().GetBoyTel); redMun.GetTel(del); Console.ReadKey(); }
履行步調:
1、創立牙婆對象,牙婆引見一個sex="男",
2、創立拜托對象,拜托是一個類,所以用new來實例化。拜托即指辦法的援用,地點初始化時傳入指向的辦法援用new Girl().GetGrilTel
3、假如牙婆引見的是sex="女",那末拜托指向另外一個辦法
4、牙婆對象挪用GetTel獲得接洽方法
以上內容就是對拜托引見的全體內容,願望年夜家愛好。