C#中的委托

C#中的委托(一)


delegate委托就像是C++中的指针,委托调用静态方法用法如下:

delegate int NumberChanger(int n)
class Program
{
   static int num =10;
   static void Main(string[] args)
   {
   NumberChanger nc1=new NumberChangers(AddNum);
   nc1(25);
   Console.WriteLine("Value of Num {0}",num);
   Console.ReadLine();
   }
   public static int AddNum(int p)
   {
   num += p;
   return num;
   }
   
}

delegate的实例对象的用法就是方法的用法,将方法代入进new NumberChangers(int n)中,然后就可以按照AddNum的使用方法来使用。

C#中的委托(二)


其中也可以使用对象中的方法,利用实例化对象来使用delegate,委托调用实例方法如下:

delegate int NumberChanger(int n)
class Program
{
   static int num =10;
   static void Main(string[] args)
   {
   NumberChanger nc1=new NumberChangers(AddNum);
   nc1(25);
   Console.WriteLine("Value of Num {0}",num); 
   MyClass mc = new MyClass();
   NumberChanger nc2 = new NumberChanger(mc.AddNum);
   nc2(35);
   Console.WriteLine("Value of Num {0}",mc.num); 
   Console.ReadLine();
   }
   public static int AddNum(int p)
   {
   num += p;
   return num;
   }
   
}

class MyClass
{
     public int num = 10;
     public int AddNum(int p)
     {
     num+=p;
     return num;
     }
     
}

C#中的委托(三)


委托中的multi-casing delegate中有一个委托列表,其中的使用方法如下:

delegate void D(int n)
class Program
{

   static void Main(string[] args)
   {
   D cd1=new D(C.M1);//使用静态方法,直接调用类名.方法
   cd1(-1);
   Console.WriteLine();
   D cd2=new D(C.m2);
   cd2(-2);
   Console.WriteLine();
   D cd3=cd1+cd2;//这个委托列表的意义为cd1和cd2依次执行
   cd3(10);//传输新的参数
   Console.WriteLine();
   C c=new C();
   D cd4=new D(c.M3);//使用一般方法时,需要先实例化对象,然后调用方法
   cd3+=cd4;
   cd3(20);
   Console.WriteLine();
   cd3-=cd1;//从委托列表中取出cd1
   cd3(10);
 
   Console.ReadLine();
   }
   
   
}

class C
{
     public static void M1(int i)
     {
     Console.WriteLine("C.M1"+i);
     }
     public static void M2(int i)
     {
      Console.WriteLine("C.M2"+i);
     }
     public static void M3(int i)
     {
      Console.WriteLine("C.M3"+i);
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值