委托: 概念,简单点,有人会说书上也会说 像c++的指针,尼玛建议不要有这个概念容易让你绕路去理解它,所以我也没有自己
概括也不知道怎么概括.那就不概括,就把他当做是一个很实在的东西.关键词 delegate
事件: 尼玛,真不想多说什么.只要你是程序员或者大二大三的学弟学妹,要不不知道我也无语 关键词 event
委托事件: 就是 委托 事件 哈哈自己理解
下面讲重点.
第一步: 定义委托 public delegate void mydelegate ( 参数);
第二步: 定义委托事件 public event mydelegate myevent
第三步:定义事件处理程序可以是多个 public void funone(参数)
public void funtow(参数)
public void funthree(参数)
第四部: 核心(同过委托事件把事件处理程序 弄给事件)
myevnt += mydelegate(funone)
myevnt += mydelegate(funtwo) 以此类推
第五步:促发事件
myevent(参数),这样就会促发事件的处理程序有多少促发多少
一般会把 这个封装成一个 促发事件
基本结束 应该很明了 如果还不懂不用担心,我就知道世界上有比我还笨的人哈哈
看下面
如果用VS开发过程序的看下面c#
1 public delegate void EventHandler(object sender, EventArgs e)
2 public event EventHandler SelectedIndexChanged;
3 DropDownList1_SelectedIndexChanged(object sender, EventArgs e)(自定义的处理程序)
4 SelectedIndexChanged += EventHandler(DropDownList1_SelectedIndexChanged)
5 当你在界面上操作 DropDownList控件的时候 当值改变促发 SelectedIndexChanged
好了就这么多,如果到这里还不能理解 委托事件的话我也无语了
15 个解决方案
#1
我承认我比你笨!
#2
总结的不错
#3
切,卖弄
#4
我说说我的理解:
delegate关键词背后的东西
delegate void TestDelegate();这句话定义了一个委托,确切的说是一个类型(Type)
这个类型是编译器帮你从Delegate这个.Net类库里的类继承出来的
以下代码可以获得的输出:
TestCSharp.Program+TestDelegate
System.MulticastDelegate
System.Delegate
event关键词的背后:
事件其实就是一种特殊的属性,类型是委托类型,event关键词的作用在于隐藏委托类型的方法,使其变得简单,event修饰的委托只有+= -+这两种操作是被暴露的
delegate关键词背后的东西
delegate void TestDelegate();这句话定义了一个委托,确切的说是一个类型(Type)
这个类型是编译器帮你从Delegate这个.Net类库里的类继承出来的
以下代码可以获得的输出:
TestDelegate d=new Program.TestDelegate(Work);
Console.WriteLine(d.GetType());
Console.WriteLine(d.GetType().BaseType);
Console.WriteLine(d.GetType().BaseType.BaseType);
TestCSharp.Program+TestDelegate
System.MulticastDelegate
System.Delegate
event关键词的背后:
事件其实就是一种特殊的属性,类型是委托类型,event关键词的作用在于隐藏委托类型的方法,使其变得简单,event修饰的委托只有+= -+这两种操作是被暴露的
#5
楼主净总结写表面的形式的东西,没有深入啊
会用,但是不知道是怎么回事
会用,但是不知道是怎么回事
#6
人才啊,真是梦里寻他千百度!相见恨晚! 最好我只能说一句:好,很好,非常好!
#7
写代码做个Demo,能出来,能成功。 才算是初步理解了!
#8
不错,感谢LZ
#9
给新手总结的不错,不过你忘了一句很重要的。。。。。。。。。
方法funone的签名必须与委托一模一样,也就是说方法的返回值类型和参数个数、类型必须与委托一样
#10
好,简单和你说说什么叫委托。
委托的意思就是“委托”。一个负责调用另一个类的方法的对象,我们通过调用它,委托它来调用真正的目标。
为了阐释什么是委托,我们不用委托,用对象来模拟:
委托的意思就是“委托”。一个负责调用另一个类的方法的对象,我们通过调用它,委托它来调用真正的目标。
为了阐释什么是委托,我们不用委托,用对象来模拟:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DelegateClass delegateobject = new DelegateClass(new TargetClass());
delegateobject.Invoke("Hello World!");
}
}
class DelegateClass
{
private TargetClass _obj;
public DelegateClass(TargetClass obj) { _obj = obj; }
public void Invoke(string Param)
{
_obj.TargetFunction(Param);
}
}
class TargetClass
{
public void TargetFunction(string Param)
{
Console.WriteLine(Param);
}
}
}
#11
现在 .NET 为你提供了简单的语法,对比下面的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DelegateClass delegateobject = new DelegateClass(new TargetClass().TargetFunction);
delegateobject.Invoke("Hello World!");
}
}
delegate void DelegateClass(string Param);
class TargetClass
{
public void TargetFunction(string Param)
{
Console.WriteLine(Param);
}
}
}
#12
学习学习
#13
学习了。
#14
第四部: 核心(同过委托事件把事件处理程序 弄给事件)
myevnt += mydelegate(funone)
myevnt += mydelegate(funtwo) 以此类推
貌似叫注册事件
myevnt += mydelegate(funone)
myevnt += mydelegate(funtwo) 以此类推
貌似叫注册事件
#15
有了委托可以使你能够像传递参数一样传递方法,为什么要使用委托、事件,例如 一个Button,当你双击它时,会自动产生一个方法,你可以在这个方法里写自己的代码,当单击按钮时,就会调用这个方法,在这里微软开发这个button时,并不知道用户需要这个button在单击时执行什么,a程序员可能会执行开灯的方法,b可能会执行吃饭的方法,因此微软通过事件这种形式为程序员提供了这种可能,
#1
我承认我比你笨!
#2
总结的不错
#3
切,卖弄
#4
我说说我的理解:
delegate关键词背后的东西
delegate void TestDelegate();这句话定义了一个委托,确切的说是一个类型(Type)
这个类型是编译器帮你从Delegate这个.Net类库里的类继承出来的
以下代码可以获得的输出:
TestCSharp.Program+TestDelegate
System.MulticastDelegate
System.Delegate
event关键词的背后:
事件其实就是一种特殊的属性,类型是委托类型,event关键词的作用在于隐藏委托类型的方法,使其变得简单,event修饰的委托只有+= -+这两种操作是被暴露的
delegate关键词背后的东西
delegate void TestDelegate();这句话定义了一个委托,确切的说是一个类型(Type)
这个类型是编译器帮你从Delegate这个.Net类库里的类继承出来的
以下代码可以获得的输出:
TestDelegate d=new Program.TestDelegate(Work);
Console.WriteLine(d.GetType());
Console.WriteLine(d.GetType().BaseType);
Console.WriteLine(d.GetType().BaseType.BaseType);
TestCSharp.Program+TestDelegate
System.MulticastDelegate
System.Delegate
event关键词的背后:
事件其实就是一种特殊的属性,类型是委托类型,event关键词的作用在于隐藏委托类型的方法,使其变得简单,event修饰的委托只有+= -+这两种操作是被暴露的
#5
楼主净总结写表面的形式的东西,没有深入啊
会用,但是不知道是怎么回事
会用,但是不知道是怎么回事
#6
人才啊,真是梦里寻他千百度!相见恨晚! 最好我只能说一句:好,很好,非常好!
#7
写代码做个Demo,能出来,能成功。 才算是初步理解了!
#8
不错,感谢LZ
#9
给新手总结的不错,不过你忘了一句很重要的。。。。。。。。。
方法funone的签名必须与委托一模一样,也就是说方法的返回值类型和参数个数、类型必须与委托一样
#10
好,简单和你说说什么叫委托。
委托的意思就是“委托”。一个负责调用另一个类的方法的对象,我们通过调用它,委托它来调用真正的目标。
为了阐释什么是委托,我们不用委托,用对象来模拟:
委托的意思就是“委托”。一个负责调用另一个类的方法的对象,我们通过调用它,委托它来调用真正的目标。
为了阐释什么是委托,我们不用委托,用对象来模拟:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DelegateClass delegateobject = new DelegateClass(new TargetClass());
delegateobject.Invoke("Hello World!");
}
}
class DelegateClass
{
private TargetClass _obj;
public DelegateClass(TargetClass obj) { _obj = obj; }
public void Invoke(string Param)
{
_obj.TargetFunction(Param);
}
}
class TargetClass
{
public void TargetFunction(string Param)
{
Console.WriteLine(Param);
}
}
}
#11
现在 .NET 为你提供了简单的语法,对比下面的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DelegateClass delegateobject = new DelegateClass(new TargetClass().TargetFunction);
delegateobject.Invoke("Hello World!");
}
}
delegate void DelegateClass(string Param);
class TargetClass
{
public void TargetFunction(string Param)
{
Console.WriteLine(Param);
}
}
}
#12
学习学习
#13
学习了。
#14
第四部: 核心(同过委托事件把事件处理程序 弄给事件)
myevnt += mydelegate(funone)
myevnt += mydelegate(funtwo) 以此类推
貌似叫注册事件
myevnt += mydelegate(funone)
myevnt += mydelegate(funtwo) 以此类推
貌似叫注册事件
#15
有了委托可以使你能够像传递参数一样传递方法,为什么要使用委托、事件,例如 一个Button,当你双击它时,会自动产生一个方法,你可以在这个方法里写自己的代码,当单击按钮时,就会调用这个方法,在这里微软开发这个button时,并不知道用户需要这个button在单击时执行什么,a程序员可能会执行开灯的方法,b可能会执行吃饭的方法,因此微软通过事件这种形式为程序员提供了这种可能,