C#委託2個簡單例子

 C#高級(八)委託
一、委託

當我們需要把方法做爲參數傳遞給其他方法的時候,就需要使用委託。

因爲有時候,我們要操作的對象,不是針對數據進行的,而是針對某個方法進行的操作。

       我們還是來以代碼入手

 

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());
            //上句和下面這句類似。
            //Console.WriteLine(x.ToString());
        }
    }
}

 

在上例中,public delegate string GetAString(); 就是聲明瞭一個委託(delegate),其語法和方法的定義類似,只是沒有方法體,前面要加上關鍵字 delegate 。定義一個委託,基本上是定義一個新類,所以,可以在任何定義類的地方,定義委託。

注意,在C#中,委託總是自帶一個有參數的構造函數,這就是爲什麼在上例中,GetAString firstString=new GetAString(x.ToString); 通過這句初始化一個新的delegate的時候,給傳遞了一個x.ToString 方法。但,在定義delegate的時候,卻沒有定義參數。

      

在看另一個例子之前,我們先來了解下匿名方法。

       匿名方法的使用,我們看個例子

 

 

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));
        }
    }
}

 

在本例中,GetUrl url=delegate(string  param) 在這裏實例化一個delegate的時候,採用了匿名的方法。本例輸出的結果是 http://asaadsad
 

接下來我們再看一個委託的例子。
原文:http://www.cnblogs.com/asp114/archive/2008/12/17/1356545.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章