为什么要使用委托,它与函数嵌套有什么区别。
解决方案 »
- C#如何读取SQL Server中xml字段内容?
- 你们有没有开发过这样的系统?
- C# 针式打印机 一按打印就退纸,但是用Word打印又是正常。
- VISTA HOME BASIC 无法安装IIS 高人请教
- 实在没辙了,笨女子,高分求解socket中ManualResetEvent 多线程操作问题
- 关于DataGridView中的Combox
- 错误:远程服务器返回错误: (403) 已禁止
- 请告诉哥哥姐姐们解决问题,再不解决新年就要被抄鱿鱼了 。救救我吧
- 请教如何用C#编写一个响应onmouseover事件的菜单下拉列表?
- Debug.WriteLine("Test")的输出在哪里啊?
- 求大哥们一个正则算法。把a标签一个属性给弄出来。
- CSDN-CSDN社区-.NET技术-C#
嵌套:在方法内调用自己
区别很明显参考http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx
有时要取函数的地址,异步啊,回调啊,Hook啊
C/C++中函数名同时也是地址。
Delphi中也有过程/函数类型
连VB都能AddressOf取函数/子过程地址委托是“更安全的”方法指针。
我想再问一下,如果我要实现如下功能,该怎么办?
1)func(30, 20)// 先把函数的参数都配置完成,但是此时并不调用func这个函数。
2)wakeup(10, 80) // i.该函数的参数定义与func的参数不同,也就是10,80并没有传到func中。
// ii.当wakeup被调用的时候,func(30, 20)也被调用。
** 也就是说,func的参数是在wakeup函数外被配置的。**
不太明白你这么个简单的问题,非何非要去想用这么一个复杂的处理方法,如果两个函数都已经存在于.net的DLL中,而且,wakeup内部调用了func话,你想在wakeup中修改func的参数,那别想了,几乎没办法实现.
public static void SaveExcel(Excel.Workbook workBook, string fileName)
{
object objMissing = System.Reflection.Missing.Value;
workBook.SaveAs(fileName , objMissing, objMissing, objMissing, objMissing, objMissing, Excel.XlSaveAsAccessMode.xlNoChange, objMissing,
objMissing, objMissing, objMissing);
}
需要调用workBook.SaveAs方法时,直接调用SaveExcel,用两个参数,就可以了.省得输十来个参数
为什么要有委托?OO中万物皆东西(object),函数指针自然也可以。委托隐藏了函数指针(避免野指针问题),符合C#语言中避免指针的弱约束,更是提供了一些实用性的操作,也提供了设计模式中策略模式的典型实现,还提供了事件驱动开发的基础模型。为什么要有函数指针?指针可以间接地指向一段代码为什么要有指针?C语言的附产物,为了间接地指向一块内存(代码或数据)的地址为什么要有函数?为了共享一段代码,节省内存个人愚解。
(声明:静态delegate除外)
这个实际上AOP编程中有关配制注入和反转控制的描述
{
bb(123);
}function bb(id)
{
alert(id);
}结果自然是123