什么叫委托

 

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

这种将方法动态的赋值给参数的做法。可以避免大量使用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);

        }



        

    



    }

}



 

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

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

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

 

你可能感兴趣的:(什么叫委托)