关于委托
请问委托有什么作用啊?
我看了MSDN很久有不知道究竟这个委托起到什么类型安全?
感觉委托就想是个可有可无的东西
而且好象这个事件也是委托?
还是不明白
在这里请高人举个通俗易懂的例子
谢谢了
[解决办法]
老兄, 你知道函数指针吗? 委托 本质上就是函数指针,但是委托是类型安全的函数指针;
类型安全是相对于c/c++等来说的
既然本质是函数指针 那么肯定委托定义就与函数定义相关,函数定义也叫函数签名
为什么说是类型安全,就是一个委托定义只匹配一个函数签名,你想强制转换也不行(编译器不会让你做),而在c里不管什么指针都在本质上是个int型 地址变量是可以被强制转换到其它函数签名上,这就是它的不安全的
原因了,
我们为什么要用委托了, 和我们中文的 "委托 "你办的事一个意思,
你的事情装(封装)在你的函数(myFunction)里 , 委托张三(对象 ZhangSanObject)帮你做 ,
Object.HelpOthersHandle += new EventHandle(myFunction);
你的函数(myFunction)签名要与 ZhangSanObject的委托签名一致。
张3也可以替李4/王5做事,只要他们的事情与 ZhangSanObject的委托签名一致
.Net delegate定义可以是任意的函数签名。
但event是有要求,是这个签名(object sender, EventArgs e)的delegate
/////不给你讲了, 估计讲了你也听不明白
[解决办法]
咳咳,看来我还得接着解释:
对于可以直接调用的,此时如果用委托方式,的确有点“怕羞”的意味——因为委托更安全。
还有些过程则根本就无法直接调用了(请注意!),就只能用委托了。
最实际的例子就是跨线程调用,比如后台线程根据计算结果要更改前台UI线程的界面,直接调用的话会造成不可预料的结果(VS2003还是允许直接调用的,但建议用委托;VS2005则彻底不允许直接调用了)。
严格的说系统事件都发生在独立的线程上,所以对事件使用委托是可以理解的。
说得不太连贯,但应该够浅显了。