现在的位置: 首页 > 综合 > 正文

什么叫委托

2013年06月16日 ⁄ 综合 ⁄ 共 1590字 ⁄ 字号 评论关闭

 

委托是一种类,它定义了方法的类型,使得方法可以当作另外一个方法的参数来传递。

这种将方法动态的赋值给参数的做法。可以避免大量使用if else的做法。同时使得程序有很好的扩展性。

例:

没用委托以前的通常代码:

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace ConsoleApplication1
{
   public  class Program
    {
        static void Main(string[] args)
        {

            getname("pslin",gettyper.en);
            getname("小林", gettyper.ch);
        }

       public enum gettyper
       {
           en=1,
           ch=0
       }

       public static void getname(string name,gettyper typer)
       {
           switch (typer)
           {
               case gettyper.ch:
                   ch(name);
                   break;
               case gettyper.en:
                   en(name);
                   break;
           }
       }

       public static void en(string name)
        {
            Console.WriteLine("morning:" + name);
        }

       public static void ch(string name)
        {
            Console.WriteLine("早上好," + name);
        }

        
    

    }
}

 

 

 

 委托真的蛮好用的 。

 

用了委托后的代码:

 

代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace ConsoleApplication1
{
public class Program
{
public delegate void gettypername(string name);
static void Main(string[] args)
{

getname(
"pslin",en);
Console.ReadLine();

}



public static void getname(string name, gettypername typer)
{
typer(name);
}

public static void en(string name)
{
Console.WriteLine(
"morning:" + name);
}

public static void ch(string name)
{
Console.WriteLine(
"早上好," + name);
}




}
}

 

 我们再精简下:

 

 

 

 

 

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace ConsoleApplication1
{
   public  class Program
    {
       public delegate void gettypername(string name);
        static void Main(string[] args)
        {

            gettypername delegate1;
            delegate1 = en;
            delegate1("pslin");
            delegate1 = ch;
            delegate1("小林");

            Console.ReadLine();
           
        }

    
        public static void en(string name)
        {
            Console.WriteLine("morning:" + name);
        }

       public static void ch(string name)
        {
            Console.WriteLine("早上好," + name);
        }

        
    

    }
}

 

第一次用委托时,必须用=来赋值方法。

第二次的话我们可以用“+=”来绑定。

取消绑定可以用“-=”来取消绑定。

 

抱歉!评论已关闭.