当前位置:编程学习 > C#/ASP.NET >>

C#委托求解

  委托接触很久了,也用了很多次了。但是一直无法理解到委托的好处。希望大家帮出出招.! --------------------编程问答-------------------- 没啥好处

如果有易做图使用委托的时候 就知道他的好处了

理解为C指针 

多线程开发中 子线程改变UI的地方 不委托不让改


比如:

 public static List<XmlNode> Each(this XmlNodeList list, EachDelegate<XmlNode> fn)
        {
            return list.ToList().Each( delegate(XmlNode node, int index)
            {
                return fn( node, index );
            } );
        }


Delegate
--------------------编程问答-------------------- C#分值类型与引用类型,这不用解释这两者是什么吧
委托就是对函数的引用 --------------------编程问答-------------------- 请使用一次linq

看看linq 如何对list<T>使用where方法滴

你甚至可以自己模仿一个linq的方法

list<T> where(this list<T> list,func(T,bool) fun)
{
   foreach(T item in list)
     if(fun(item))
       yield return item;
}

ok,你觉着linq在这里使用func(T,bool)对你来说有好处没,好处是啥!!! --------------------编程问答-------------------- 委托就是对函数的引用 --------------------编程问答-------------------- 允许将原来由函数内处理的行为提升到调用者处理。

比如说,一个查找文件的操作,我们用一个函数来封装。但是找到以后做什么,由主程序决定。

我们就让主程序调用这个查找文件的函数,同时传递一个委托,当文件找到以后,我们把文件送入打印机打印。

如果我们希望重用这个查找的过程,但是这次我们需要将找到的文件备份到FTP服务器,那么这个函数不用动,我们只要传递给他另一个复制文件到服务器的委托就可以了。

函数使得我们可以把主程序要做的事情推到函数里面做,更改函数,主程序不变,函数是一个黑盒。

委托使得我们把函数体内做的事情提到主程序去做,更改主程序,函数不变。 --------------------编程问答-------------------- 我设计一个类
这个类里面有个方法大概是这样子的
void DoSomething()
{
   但到底Do什么好呢,我也不知道...留给外面的人去实现把
}
于是 我定义了一个函数签名类型也就是委托,再声明一个事件.......这就是作用把


就如我们在网页上拖一个Button,注册了Click事件
对Button来说,他是有Click函数的,但这个函数暂时没有干什么,
让外面的我们来实现,
于是我们在相同函数签名说明Click要干什么
然后注册到Button的Click事件中去
于是点了网页上按钮后,Button就调用我们写的函数!!!!

--------------------编程问答-------------------- 就是我自己做不了的事情,让其他人来做。

比如我帮你写作文,但是主题我不知道,你要告诉我主题

Write(delegate subject)
{
  subject();  //获得主题
  write();    //写文章  
}

这个subject是你去实现的,你传递给我,实际就是函数指针的一个包装。

委托使用在回调,事件等方面。

http://blog.csdn.net/cc_net/archive/2008/05/21/2467717.aspx --------------------编程问答-------------------- 如果你能理解javascript里面的函数是一个对象的话,我相信委托就不能理解了
function a(b)
{
     b();

}
function b()
{
    alert("this is b");
}

--------------------编程问答-------------------- 委托就是对函数的引用 我本人认为孰能生巧,什么事都是一个熟与不熟啊,所以你自己多找些这些东西练练啊,好好加油啊。。。。 --------------------编程问答-------------------- 就是函数指针。。 --------------------编程问答-------------------- 委托其实就是用来解决函数引用的问题,就是可以通过一个变量来代表某类函数,这类函数函数签名必须一致。由于它是一个变量,所以可以当成其他函数的参数来使用,即可以用来实现函数回调功能。
声明一个委托其实在后台CLR是把它当成一个类来处理。这点你可以通过ildasm工具来查看...

(委托也有委托的缺点,所以后面又使用了事件,同样也可以通过ildasm来查看CIL) --------------------编程问答-------------------- 有了委托,我们可以更好的进行封装。比如:Button,我们不需要知道底层的消息是如果发送,获取的,只需要传递一个函数指针,专注于做哪些操作。使得我们我可更加专注于业务逻辑的处理。同时,委托又是类型安全的。(个人愚见) --------------------编程问答-------------------- 首先委托是类型安全的

类似C中的指针 --------------------编程问答-------------------- 看这两篇文章


http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html

http://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html

应该会对你有所帮助
补充:.NET技术 ,  .NET Framework
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,