C#泛型之泛型委托

在看泛型委托之前还需要先了解委托的概念。
这里讲的委托有两种类型一种是有返回值的,另一种是事件委托。

     // 定义有返回值的委托 
     public   delegate   string  GenricDelegate < T, S > (T title, S author);

    
// 定义事件委托。
     public   delegate   void  GenricDelegateEnent < E,P > (E Name,P Address);

    
public   class  GenericDelegateClass < V,F >
    
{
        
//声明委托
        public GenricDelegate<V, F> GdeleValue;
        
//声明事件委托
        public event GenricDelegateEnent<V, F> GdEvent = null;

        
public string GetValues(V title, F author)
        
{
            
//调用委托
            return GdeleValue(title, author);
        }


        
public GenericDelegateClass()
        
{
        }


        
public void InvokeEvent(V name, F address)
        
{
            
if (GdEvent != null)
            
{
                
//调用委托
                GdEvent(name, address);
            }

        }

    }

上面我们定义及调用了泛型委托,接下来就来梆定委托。

         private   void  btnDelegate_Click( object  sender, EventArgs e)
        
{

            GenericDelegateClass
<stringstring> gd = new GenericDelegateClass<stringstring>();
            
//将DelegateReturn事件梆定给GdeleValue
            gd.GdeleValue = new GenricDelegate<stringstring>(DelegateReturn);
            
//将GenericEvent事件梆定给GdEvent
            gd.GdEvent += new GenricDelegateEnent<stringstring>(GenericEvent<string,string>);
        }


        
public   string  DelegateReturn < T,S > (T title,S author)
        
{
            
return title.ToString() + author;
        }


        
private   void  GenericEvent < V, F > (V name, F address)
        
{
            
//
        }

在这里我们看到我在梆定DelegateReturn的时候并没有带泛型参数。在这里的泛型参数其实是没什么意义的。因为他的类型取决于调用委托的方法的类型。也就是在前面那段代码中InvokeEvent方法的类型,这里的DelegateReturn要用泛型方法是可以随时跟InvokeEvent的参数类型保持一至。这样梆定后我们再来调用gd.GetValues("my generic post","fastyou");这样调用的其实就是DelegateReturn的方法,这就是委托的好处了,同样调用gd.InvokeEvent("my generic post","fastyou");就是GenericEvent方法。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值