欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

关于C#委托你不可不知的几件事

创建时间:2011年06月12日 23:33  阅读次数:(4589)
分享到:

委托是C#中非常重要的一个概念,并在C#中得到了丰富的应用,如事件,线程等。那什么是委托呢?具体来说,委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。

委托具有以下特点:

委托类似于 C++ 函数指针,但它是类型安全的。

委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。

C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。

在C#中使用委托分为三步:

1.定义委托:

  1. //声明委托  
  2. public delegate void MyDel(); 

2.实例化委托:

  1. TestDel t = new TestDel();   
  2. Console.WriteLine("-----以下是简单使用委托演示--------");  
  3. //t.MyMethod();  
  4.  
  5. ///实例化委托,用一个方法来进行实例化  
  6. ///该方法签名要与委托签名一致  
  7. MyDel del = new MyDel(t.MyMethod); 

3.调用委托:

  1. ///调用委托  
  2. del(); 

好了,其实委托的变化很复杂,但基本都会符合这么三个步骤,说过了,这些,再来看一下完整的代码

  1. namespace DelegateDemo{    
  2.   //声明委托      
  3. public delegate void MyDel();      
  4. //声明带参的委托      
  5. public delegate void MyDel2(int num1, int num2);      
  6. //声明带有返值的委托      
  7. public delegate string MyDel3(string s);      
  8. //声明委托用于演示匿名方法    
  9.   public delegate string ProcessString(string s);    class Program     
  10.  {          
  11. static void Main(string[] args)        
  12.   {           
  13.    #region 委托演示                       
  14.                /*       
  15.        TestDel t = new TestDel();                
  16.         #region 简单实例化委托与调用委托        
  17.       Console.WriteLine("-----以下是简单使用委托演示--------  
  18. ");             
  19.  //t.MyMethod();       
  20. ///实例化委托,用一个方法来进行实例化         
  21.      ///该方法签名要与委托签名一致    
  22.           MyDel del = new MyDel(t.MyMethod);                    
  23.      ///调用委托          
  24.     del();        
  25.       //C#2.0后可以这种方式实例化委托          
  26.     MyDel del4 = t.MyMethod;           
  27.    del4();        
  28.      //用静态方法进行实例化     
  29.          del4 = TestDel.MyStaticMethod;      
  30.         del4();           
  31.    //以下代码效果相同        
  32.       //MyDel2 del2 = new MyDel2(t.MyMethod);            
  33.   //del2(10, 20);          
  34.     MyDel2 b;`/f ^g
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 77+67=? 的结果(结果是:144)
结  果: