#div_codimg{border:0px;}
//CodeinC#
intypublicdelegintPerformCalculintx.;
通过委托可以间接地调用该方法。简单理解Deleg委托(或代理)一种数据类型:变量可以引用到某一个符合要求的方法上。
区别在于.NET委托是类型平安的这说明,其实.NET委托类似于C语言的函数指针。C中的函数指针只不过是一个指向存储单元的指针,无法说出这个指针实际指向什么。
2.委托使用
使用委托的四部曲:
定义一种委托类型
委托执行时要调用方法
定义一个委托实例
委托实例的调用
先定义一种委托类型如下:
//自定义一种委托类型
publicdelegatevoidStringProcessorstringinput;
然后我再定义5中候选的委托方法如下:
voidPrintStrstringx
voidPrintIntegintx
stringyintGetStringLengthstringxvoidPrintTwoStrstringx.>
voidPrintObjectobjectx
参数个数和返回类型匹配)激动时刻到马上公布答案,大家猜猜看哪个和上面提供的委托类型签名匹配(签名匹配:参数类型。和委托类型匹配的方法是PrintStr和PrintObject如果有不明白的请细细考虑一下委托匹配的条件—签名匹配。
图1委托胜利输出
接下来我将介绍委托最经常使用的地方—事件。现在对委托有了一定的认识。
例如在UI编程中,将从发送器和接受器的角度讨论事件。鼠标单击或键盘按键,发送器就是.NETCLR注意事件发送器并不知道接收器是谁,这符合面向对象的原则,而且某个事件接收器有个方法处置该事件,这个时候就要委托,如前面所讲事件发送器对事件接收器一无所知,通过委托作为一个中介,接收器把事件处置方法注册到事件中,这样就实现了由发送器->委托->接收器的过程了