DEBUG - 天道酬勤
當(dāng)我們需要把方法做為參數(shù)傳遞給其他方法的時(shí)候,就需要使用委托。
因?yàn)橛袝r(shí)候,我們要操作的對(duì)象,不是針對(duì)數(shù)據(jù)進(jìn)行的,而是針對(duì)某個(gè)方法進(jìn)行的操作。
我們還是來(lái)以代碼入手
Code using System; namespace gosoa.com.cn { public class test { public delegate string GetAString(); public static void Main() { int x=10; GetAString firstString=new GetAString(x.ToString); Console.WriteLine(firstString()); //上句和下面這句類(lèi)似。 //Console.WriteLine(x.ToString()); } } }
在上例中,public delegate string GetAString(); 就是聲明了一個(gè)委托(delegate),其語(yǔ)法和方法的定義類(lèi)似,只是沒(méi)有方法體,前面要加上關(guān)鍵字 delegate 。定義一個(gè)委托,基本上是定義一個(gè)新類(lèi),所以,可以在任何定義類(lèi)的地方,定義委托。
注意,在C#中,委托總是自帶一個(gè)有參數(shù)的構(gòu)造函數(shù),這就是為什么在上例中,GetAString firstString=new GetAString(x.ToString); 通過(guò)這句初始化一個(gè)新的delegate的時(shí)候,給傳遞了一個(gè)x.ToString 方法。但,在定義delegate的時(shí)候,卻沒(méi)有定義參數(shù)。
在看另一個(gè)例子之前,我們先來(lái)了解下匿名方法。
匿名方法的使用,我們看個(gè)例子
Code using System; namespace gosoa.com.cn { public class test { delegate string GetUrl(string val); static void Main(string [] args) { string domin="asaadsad"; GetUrl url=delegate(string param) { param="http://"+param; return param; }; Console.WriteLine(url(domin)); } } }
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/sendling/archive/2009/03/02/3948561.aspx
Powered by: BlogJava Copyright © HUIKK