简单的委托

简单的委托

那委托需要承载哪些信息呢?首先,它存储了方法名,还有参数列表(方法签名),以及返回的类型。比如:
delegate string/*返回类型*/ ProcessDelegate(int i);
这就是一个委托的定义。蓝色部分是声明委托的关键字,红色部分是返回的类型,而黑色部分是委托的类型名,和一个类名差不多,而()里的就是参数部分。它的意思是,你要使用这个委托来做事情的话,那么,做事情的方法必须满足以下条件:
1、返回类型和委托的返回类型一致,这里是string类型;
2、能且只能有一个参数,并且是int类型。
OK,满足以上两个条件,一切就可以工作了:)

例如:
 

 1  using  System;
 2  using  System.Collections.Generic;
 3  using  System.Text;
 4 
 5  namespace  TestApp
 6  {
 7       ///   <summary>
 8       ///  委托
 9       ///   </summary>
10       ///   <param name="s1"></param>
11       ///   <param name="s2"></param>
12       ///   <returns></returns>
13       public   delegate   string  ProcessDelegate( string  s1,  string  s2);
14 
15       class  Program
16      {
17           static   void  Main( string [] args)
18          {
19               /*   调用方法   */
20              ProcessDelegate pd  =   new  ProcessDelegate( new  Test().Process);
21              Console.WriteLine(pd( " Text1 " " Text2 " ));
22          }
23      }
24 
25       public   class  Test
26      {
27           ///   <summary>
28           ///  方法
29           ///   </summary>
30           ///   <param name="s1"></param>
31           ///   <param name="s2"></param>
32           ///   <returns></returns>
33           public   string  Process( string  s1, string  s2)
34          {
35               return  s1  +  s2;
36          }
37      }
38  }

输出的结果是:
Text1Tex2


2、泛型委托

泛型的委托,就是然参数的类型不确定,例如代码改写为:
 

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

namespace  TestApp
{
    
///   <summary>
    
///  委托
    
///   </summary>
    
///   <param name="s1"></param>
    
///   <param name="s2"></param>
    
///   <returns></returns>
     public   delegate   string  ProcessDelegate < T,S > (T s1, S s2);

    
class  Program
    {
        
static   void  Main( string [] args)
        {
            
/*   调用方法   */
            ProcessDelegate
< string , int >  pd  =   new  ProcessDelegate < string , int > ( new  Test().Process);
            Console.WriteLine(pd(
" Text1 " 100 ));
        }
    }

    
public   class  Test
    {
        
///   <summary>
        
///  方法
        
///   </summary>
        
///   <param name="s1"></param>
        
///   <param name="s2"></param>
        
///   <returns></returns>
         public   string  Process( string  s1, int  s2)
        {
            
return  s1  +  s2;
        }
    }
}


输出的结果就是:
Text1100
 

你可能感兴趣的:(职场,休闲,简单的委托)