谁能帮忙解释一下C#代理
解决方案 »
- wpf在listview中使用DataTemplate时加入选中行背景图片的功能
- 【C#能否直接调用windows系统的搜索功能?】注意要有返回,不能直接打开一个系统搜索窗口。
- 用gridview显示慢的问题
- 有人知道网页的字体大小和系统的字体大小的转换吗?
- C#中的Timer控件怎么样清零
- XML 如何复制一个节点
- 我在.aspx的html编辑器中编辑它,增加一个内容,为什么回到设计器时不能更新我的界面?
- 请问在c#,如何引用dll?
- 公司垮台前的丝丝迹象!请大家高谈阔论!
- 在C#中如何调用PowerPoint中的功能:把PPT文件转换成JPEG格式的文件(在线等待)
- smtp-auth的问题
- 2个问题,一起问了吧,求高手!
{
public delegate void MyDelegate(String name); //声明代理 public static void MyDelegateFunc(String name)
{
System.Console.WriteLine("hello:" + name);
}
static void Main(string[] args)
{
MyDelegate m = new MyDelegate(MyDelegateFunc); //创建代理对象
m("snow"); //调用代理
System.Console.Read();
}
}
“代理”(delegate)(代表、委托)“代理”是类型安全的并且完全面向对象的。protected delegate string SqlGainer(string strKey, out CommandType type);
protected string GetSql(SqlGainer gainer, string key, out CommandType cmdType)
{
return gainer(key, out cmdType);
}http://www.cnblogs.com/xworld/archive/2007/06/26/795898.htmlhttp://www.cnblogs.com/powerlc/archive/2005/08/31/227239.html
用面向对象思维理解.NET委托:函数是对象、委托是函数对象的类型
方法定义的时候可能要定义调用的参数,private string GetName(string userId){} //userId 是一个参数;
代理定义的时候可能要定义调用的方法,private delegate string GetAString(string x); // x 是一个方法;就拿一个简单的Button控件的Click事件,我们在设计button的时候对于Button的Click事件所要执行的操作未知,这个未知的操作就像一个变量参数;
我们怎么使系统得知Click事件,从而获得windows窗口句柄呢?那就得监视WinProc,捕获Windows消息,当然这些都是早期的Windows下开发人员的工作,
.Net将这部分工作用代理封装起来,这样我们写程序时不用知道底层是怎么获取Windows消息,触发事件的,我们只用知道点击Button后执行button_Click方法,
而button_Click方法就是由代理来执行的;
如下所示:
Button.Click += EventHandler(button_Click);//这样就创建了 EventHandler 的代理对象
//button_Click 是方法名,也就是方法的地址。
说的很牛啊