委托的定义,与简单使用

委托的简介(Delegate)

在.NET Framework中,委托是一种数据结构,它引用静态方法或者引用类实例该类的实例方法。
委托是委托类型的实例。只有当方法的签名与委托类型所指定的签名完全匹配时,委托才能引用方法。当委托引用实例方法时,委托储存对该方法入口点的引用及对称为目标的对象的引用,该对象是对其待用该方法的类的实例。实例方法的目标不能为空引用。当委托引用静态方法时,委托储存对该方法入口点的引用。静态方法的目标为空引用。

声明委托方法如下
public delegate void ProcessBookDelegate(book book);

声明一个新的委托类型时,每个委托类型都描述参数的数目和类型,以及它可以封装的方法的返回值类型。每当需要一组新的参数类型或新的返回值类型时,都必须声明一个新的委托类型。

实例化委托即在声明了委托类型后,必须创建委托对象并使之与特定方法关联。与所有其它对象类似,新的委托对象用NEW表达式创建,一旦创建了委托,它所关联到的方法便永不改变。

调用委托即在委托对象后,通常将委托对象传输给讲调用该委托的其他代码。通过委托对象的名称(后面跟着要传递给委托的参数,扩在括号内)调用委托对象。

下面有一个例子:

首先声明一个DelegateFeedBack类
None.gif public   class  DelegateFeedBack
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public DelegateFeedBack()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//
InBlock.gif        
// TODO: 在此处添加构造函数逻辑
InBlock.gif        
//
InBlock.gif

InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif    
public string PrintString(int intValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if (intValue > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return "这是一个正数";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
if (intValue < 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return "这是一个负数";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
return "这是一个零";
ExpandedSubBlockEnd.gif    }

InBlock.gif    
public string PrintUpDown(int intValue)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
if (intValue > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return intValue.ToString() + ">0";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
if (intValue < 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return intValue.ToString() + "<0";
ExpandedSubBlockEnd.gif        }

InBlock.gif        
return intValue.ToString() + "=0";
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}


在页面中首先定义一个委托DelegatePring,携带一个整形参数

None.gif public   delegate   string  DelegatePrint( int  intValue);

接着在Page_Load里调用委托

None.gif      protected   void  Page_Load( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        DelegateFeedBack myDlegate 
= new DelegateFeedBack();
InBlock.gif        DelegatePrint printString 
= new DelegatePrint(myDlegate.PrintString);
InBlock.gif        DelegatePrint printletter 
= new DelegatePrint(myDlegate.PrintUpDown);
InBlock.gif        Response.Write(printString(
10)+"<br>");
InBlock.gif        Response.Write(printletter(
-100+ "<br>");
InBlock.gif        
ExpandedBlockEnd.gif    }

点此下载源代码

转载于:https://www.cnblogs.com/mgod/archive/2007/03/29/692481.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值