Delegate and Event

1.Delegate

delegate 是关键词,【注:EventHandler是一个声明委托的微软C#的命名标准,我的习惯是标准就要第一时间说,也就这个命名习惯要第一时间养成】

在现实生活中,委托只是个命令,做事情是别人,而在程序世界里委托只是存储了各个方法的地址,而他自己也是什么也不做的。

BugTicketEventHandler myDelegate = new BugTicketEventHandler(MrZhang.BuyTicket);

这是委托的声明方法, BugTicketEventHandler(委托的方法);委托的方法必须要加上,因为委托的构造函数是不为空的。

注:委托的参数和返回类型,都要和你要具体委托的方法要一致

class MrZhang
    {  
        public static void BuyTicket()
        {
            Debug.WriteLine("Ming you go to Buy Ticket For me!");
        }
    }

class MrMing
    {
        public static void Doit()
        {
         
            Debug.WriteLine("i do it!");
        }
    }

public sealed partial class MainPage : Page
    {
        public delegate void BuyTicketEventHandler();
    
        public MainPage()
        {
            this.InitializeComponent();

BuyTicketEventHandler myDelegate = new BuyTicketEventHandler(MrZhang.BuyTicket);
            myDelegate += MrMing.Doit;
            myDelegate += test;
            myDelegate();
        }    
        void test()
        {
            Debug.WriteLine("TEST");
        }

}

2.Event

事件是类在发生其关注的事情时用来提供通知的一种方式。

事件的发生一般都牵扯2个角色

事件发行者(Publisher):一个事件的发行者,也称作是发送者(sender),其实就是个对象,这个对象会自行维护本身的状态信息,当本身状态信息变动时,便触发一个事件,并通知说有的事件订阅者。

事件订阅者(Subscriber):对事件感兴趣的对象,也称为Receiver,可以注册感兴趣的事件,在事件发行者触发一个事件后,会自动执行这段代码。

时间: 2025-01-13 12:03:29

Delegate and Event的相关文章

浅谈c#中的delegate和event了

一.开篇忏悔 对自己最拿手的编程语言C#,我想对你说声对不起,因为我到现在为止才明白c#中的delegate和event是怎么用的,惭愧那.好了,那就趁着阳光明媚的早晨简单来谈谈delegate和event的简单用法吧,希望能给初学者带来帮助.PS:别像我那样学了几年c#到头来都不知道delegate和event怎么用. 二.delegate到底是什么东西 孩子,C语言总学过吧,如果你学得不像我那么差的话,函数指针总用过吧,就算没用过总听说过吧,嗯,大胆的告诉你,你完全可以把delegate理解

delegate 与 event 不得不说的关系~

先来看一段代码: /// <summary> /// 事件类 /// </summary> public class EventClass { /// <summary> /// Go委托 /// </summary> /// <param name="nam"></param> public delegate void Go(string nam); /// <summary> /// 事件委托 //

Java与.net的区别delegate和event

There is no delegate concept in Java The right-side C# program may be mimiced with reflection technology. 在Java中没有delegate的概念,而C#中delegate使用的是类似Java中反射的工具. import java.lang.reflect.*; import java.io.*; public class Test { public static void main(Stri

c# 关键字delegate、event(委托与事件)[MSDN原文摘录][2]

//Demo1:Declaring an event in an interface and implementing it in //a class. // event_keyword.cs using System; public delegate void MyDelegate(); // delegate declaration public interface I { event MyDelegate MyEvent; void FireAway(); } public class M

c# 关键字delegate、event(委托与事件)[MSDN原文摘录][1]

A delegate is a type that safely encapsulates a method, similar to a function pointer in C and C++. Unlike C function pointers, delegates are object-oriented, type safe, and secure. The type of a delegate is defined by the name of the delegate. The f

C# 中的delegate、event、Action、Func

缘起: 之前一直很纠结C#中(delegate.event.Action.Func)的用法,这么多方法,感觉每次使用的时候好像都没啥区别,老感觉微软有多此一举之嫌,不过今天花了点时间好好研究了下,才发现他们实质上的区别. 解惑: 我发现,这四种类型中不管哪种,其实都属于委托,只是展现的形式不同而已,无论哪种,其实都可以采用delegate实现,为什么会衍生出其他三种形式,我猜是为了方便开发者使用,因为我们会发现定义一个delegate其实还是蛮费劲的,至少会比其他三种多一条定义语句,使用起来也不

[转载]C#委托和事件(Delegate、Event、EventHandler、EventArgs)

原文链接:http://blog.csdn.net/zwj7612356/article/details/8272520 14.1.委托 当要把方法作为实参传送给其他方法的形参时,形参需要使用委托.委托是一个类型,是一个函数指针类型,这个类型将该委托的实例化对象所能指向的函数的细节封装起来了,即规定了所能指向的函数的签名,也就是限制了所能指向的函数的参数和返回值.当实例化委托的时候,委托对象会指向某一个匹配的函数,实质就是将函数的地址赋值给了该委托的对象,然后就可以通过该委托对象来调用所指向的函

C# note 06——delegate 和 event

1. Delegate类似于于c++中的函数指针,在C#中定义为一个类 声明定义时,有些像类: delegate int MyDelegate(char c); 实例化:(注意函数不要加括号,要的不是函数调用,而是函数地址) MyDelegate myfuncs = new MyDelegate(MyClass.testFunc); MyDelegate myfuncs = MyClass.testFunc; 不支持无参数的构造函数. MyDelegate myfuncs = new MyDel

【C#】delegate 和 event

在开始之前,先说一下文章的表达习惯. Object a = new Object(); 在上面的例子里,Object 是一种类型,a 是一个引用,new Object() 构造了一个对象,有时 ”构造对象“ 也被称为 ”创建实例“.有的文章习惯把 a 也称作实例,请根据上下文理解不要混淆.接下来你会经常看到类似 ”Object 类型“ ”Object 引用“ ”Object 对象“ 这样的表达. 另外,我会尽量使用 ”方法“ 而不使用 ”函数“ 的称呼.习惯使用 C/C++ 的读者接下来看到 ”