关于C#中事件与委托区别的一个疑问
网上说C#中的事件是封装过的委托,那么为什么这里是
HandEvent += Method;
而不是
HandEvent handevent += Method;
委托是一种类吧,事件是封装后的类,那为什么没有实例化?静态类感觉也不是。
这里的事件 HandEvent应该是一种属性吧,并且带有访问器remove, add。
public delegate void InvokeMethond(string str);
public delegate void Handler(string str);
class Program
{
static event Handler HandEvent;
static void Main(string[] args)
{
InvokeMethond invokeMethond = Method;
HandEvent += Method;
invokeMethond("委托");
HandEvent("事件");
}
public static void Method( string str )
{
Console.WriteLine(" 字符串: {0}", str);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从本质上来说,下面这两句话没区别,都是定义一个
string => void
的委托从使用上来看,区别就在于:委托要赋初始值,而事件不用
委托是个类型,但事件不同,它是一个成员。
这说明,在使用
h3
的时候,它已经实例化了,是一个事件对象(成员)。委托和事件的关系,就像类型和变量之间的关系差不多。上网搜一下“事件与委托的关系”或者类似的关键字,会找到更多有助于理解的信息。