精华内容
下载资源
问答
  • <p><img alt="" height="235" src="https://img-ask.csdnimg.cn/upload/1623116095731.png" width="1162" /></p>
  • C#的event关键字

    2012-07-30 20:02:39
    The following example shows how to declare and raise an event that uses EventHandler as the underlying delegate type. For the complete code example that also shows how to use the generic ...
    
    

    The following example shows how to declare and raise an event that uses EventHandler as the underlying delegate type. For the complete code example that also shows how to use the generic EventHandler<TEventArgs> delegate type and how to subscribe to an event and create an event handler method, see How to: Publish Events that Conform to .NET Framework Guidelines (C# Programming Guide).

        public class SampleEventArgs
        {
            public SampleEventArgs(string s) { Text = s; }
            public String Text {get; private set;} // readonly
        }
        public class Publisher
        {
            // Declare the delegate (if using non-generic pattern).
            public delegate void SampleEventHandler(object sender, SampleEventArgs e);
    
            // Declare the event.
            public event SampleEventHandler SampleEvent;
    
            // Wrap the event in a protected virtual method
            // to enable derived classes to raise the event.
            protected virtual void RaiseSampleEvent()
            {
                // Raise the event by using the () operator.
                if (SampleEvent != null)
                    SampleEvent(this, new SampleEventArgs("Hello"));
            }
        }
    
    
    
    

    Events are a special kind of multicast delegate that can only be invoked from within the class or struct where they are declared (the publisher class). If other classes or structs subscribe to the event, their event handler methods will be called when the publisher class raises the event. For more information and code examples, see Events (C# Programming Guide) and Delegates (C# Programming Guide).

    Events can be marked as publicprivateprotectedinternal, or protected internal. These access modifiers define how users of the class can access the event. For more information, see Access Modifiers (C# Programming Guide).

    展开全文
  • C#的Event类. nodejs的Event风格

    千次阅读 2015-06-23 18:25:35
    //-------------------------------------------...TSEvent.singleTon.RegistEvent("C_GetGW", 需要监听函数); 发消息就要  TSEvent.singleTon.SendMessage("C_GetGW", JSON数据);
    //------------------------------------------------------------------------------
    // <auto-generated>
    //     This code was generated by a tool.
    //     Runtime Version:4.0.30319.18408
    //
    //     Changes to this file may cause incorrect behavior and will be lost if
    //     the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    using System;
    using System.Collections.Generic;
    using LitJson;
    
    namespace TSGame
    {
    	public class TSEvent
    	{
    		public delegate void EventHandler(JsonData data);
    		static public TSEvent singleTon = new TSEvent();
    
    		public Dictionary<string, EventHandler> eventMap = new Dictionary<string, EventHandler>();
    
    		public TSEvent ()
    		{
    
    		}
    
    		public void RegistEvent(string msg, EventHandler eh)
    		{
    			if (eventMap.ContainsKey(msg))
    			{
    				eventMap[msg] += eh;
    			}
    			else
    			{
    				eventMap.Add(msg, eh);
    			}
    		}
    
    		public void RemoveRegistEvent(string msg, EventHandler eh)
    		{
    			if (eventMap.ContainsKey(msg))
    			{
    				eventMap[msg] -= eh;
    			}
    		}
    
    		public void SendMessage(string msg, JsonData json)
    		{
    			eventMap[msg].Invoke(json);
    		}
    	}
    }
    
    
    
    
    

    用起来非常简单. 比方要监听回来的C_GetGW消息.那么就下面这写法.nodejs的 风格.

    TSEvent.singleTon.RegistEvent("C_GetGW", 需要监听的函数);

    发消息就要 

    TSEvent.singleTon.SendMessage("C_GetGW", JSON数据);


    
    





    展开全文
  • event是委托一种访问修饰符 event的定义必须在类内,delegate定义可以脱离类存在 event通常只能被申明类访问,外部类对event只能使用+=或者-= ,调用都不行,必须在本类中调用 4.当然在声明类内,...
    1. event是委托的一种访问修饰符

    2. event的定义必须在类内,delegate定义可以脱离类的存在

    3. event通常只能被申明的类访问,外部类对event只能使用+=或者-= ,调用都不行,必须在本类中调用

    4.当然在声明的类内,event可以做delegate一切可以做的事情
    在这里插入图片描述

    展开全文
  • 最接近C# 的Event的C++处理

    千次阅读 2011-02-15 23:27:00
    boost Event

    最接近C# EventC++处理

     

    嗯,最近搞了一点C++,完成了所谓的C++下的Event,懒得多说看代码

    #include "boost/function.hpp"

    #include "boost/bind.hpp"

    #include "iostream"

     

    using namespace boost;

    using namespace std;

     

    template<typename T>

    class Event

    {

        bool flag;

    public:

        typedef boost::function<T> handle_type;

        handle_type Invoke;

     

        Event():flag(false),Invoke()

        {

     

        }

     

        Event& operator= (const boost::function<T>& rhs)

        {

           this->Invoke = rhs;

           flag = true;

           return *this;

        }

     

        void Clear()

        {

           flag = false;

        }

     

        bool IsNull()

        {

           return !flag;

        }

     

    };

    这样就完成了Event的宣告。用起来实在是很方便,举个小例子

     

    比如这里定义一个窗体类:

    class Window

    {

    public:

        Event<void(int)> ClickEvent;   

     

        void test()

        {

           if(!ClickEvent.IsNull())

           {

               ClickEvent.Invoke(100);

           }

        }

    };

     

    再搞一个测试的片段

    void foo(int x)

    {

        cout << "x= " << x <<endl;

    }

     

    class Foo

    {

    public:

        void foo(int x)

        {

           cout << "foo:: x= " << x <<endl;

        }

    };

     

    int _tmain(int argc, _TCHAR* argv[])

    {

        Window win;

        Foo f;

        win.ClickEvent = bind(&foo,_1);

        win.test();

       

        win.ClickEvent = bind(&Foo::foo,&f,_1);

        win.test();

     

        win.ClickEvent.Clear();

        win.test();

        return 0;

    }

    是不是一切都很美妙呢!当然你可以直接使用boost::function,不过会有一个小小的问题,你无法来判断boost::function这个东东是不是一个零值,而且每次调用时需要去写一个判断是不是很烦呢?

    展开全文
  • C#的Event关键字和自定义事件总结

    千次阅读 2014-12-04 15:35:10
    1.event这个关键字会把一般委托转换为具有Add和Remove方法持殊委托属性。 2.event关键字,限定了外界对委托变量只能使用+=或-=操作符,从而限定外界非法赋值和调用 3.有event关键字标识委托,一般情况下...
  • 好久没用C++了,今天整理以前写的代码,发现一个以前用C++写的Event模板类, 虽然写出来之后都没怎么用过,不过个人感觉应该蛮好用的,这里贴出来,大家帮忙找找碴。 1,使用方法 先看看这个Event类怎么使用的吧...
  • [原创]用C++模拟C#的event机制

    千次阅读 热门讨论 2005-08-02 18:08:00
    ! 作为一个C++程序员,学习C#应该不是一件很困难的事情,因为C#的许多特性都是从C++...但是C#作为一门全新的编程语言,它必然有自己的新特性,而这些C++中并不存在的新特性正是我们从C++转向C#的过程中必须认真重新学
  • RT 转载于:https://www.cnblogs.com/zhengwenwei/archive/2011/10/12/2208408.html
  • C# Event小例子

    2018-09-09 10:10:58
    简单的C# Event小例子,通过这个例子可以很快的理解C#的Event使用方法。
  • C#Event的应用

    2016-09-04 10:08:33
    event事件是C#的固有属性,简单来说,就是发布者通过新建一个EventHandler对象,然后别的注册者可以注册事件到这个对象上面。当发布者需要有消息发布时,就会执行注册者注册的方法。此外,EventHandler是delegate,...
  • C#Event的限制

    2020-03-11 13:33:42
    事件只允许在事件声明类中Invoke和赋值(=);子类和其他类中都不允许;外部根据Event的修饰符可以+=或-=
  • C#event内存泄漏总结

    2020-08-27 18:51:57
    本篇文章给大家分享了在C#event内存泄漏相关知识点以及代码分享,有兴趣朋友参考学习下。
  • C#事件EVENT

    2012-04-22 23:12:04
    那么什么是事件呢?所谓事件,就是由某个对象发出消息,这个消息标志着某个特定行为...那个触发(raise)事件对象称为事件发送者(event sender),捕获并响应事件对象称为事件接收者(event receiver)
  • C# delegate event

    2010-10-29 16:27:00
    delegate是C#一种类型,C# event的处理实际上是一种具有特殊签名delegate,本文就介绍了C# delegate和C# event。 在基于Windows平台程序设计中,事件(event)是一个很重要概念。因为在几乎所有...
  • C#的Event

    2019-01-08 01:23:32
    Event其实就是简化的Delegate,被用于Event的delegate只能进行 += (注册)和 -= (反注册)操作,其他的操作被限制了。Event其实是Observer模式在C#的built-in实现。
  • c# key event

    2016-09-15 21:22:00
    使用C#写ui时,希望能够读取到键盘输入事件,用于快捷键或者其他操作。本文记录操作创建key event的方法。 参考链接:  http://csharp.net-informations.com/gui/key-press-cs.htm  ...
  • c#事件event

    2019-11-07 13:49:12
    3)声明事件必须通过关键字event声明 4)1.声明委托 2.声明事件 3. 事件触发 4.事件响应 2.举例 /***********发布器类***********/ public class EventTest { public delegate void N...
  • C# 事件event

    2019-06-28 12:10:00
    public class AAA: MonoBehaviour { public delegate void PlayEndDelegate(); //此处可以使用内置Action或Func委托简化, //具体参考 ... public event PlayEndD...
  • 摘要:C#源码,控件类库,EventLog,事件日志 C#使用EventLog组件读写事件日志实例源码,C#读取事件日志内容,一个较简单实例,源码参考价值高,特别是对初学者来说。
  • C# 事件 Event

    2019-10-01 03:58:43
    实际上,事件是建立在对委托语言支持之上。事件是对象用于(向系统中所有相关组件)广播已发生事情一种方式。任何其他组件都可以订阅事件,并在事件引发时得到通知。 简单来说,鼠标移动、点击等等都是一...
  • C# Delegate Event

    2016-03-13 11:08:00
    1系统自带泛型委托ActionFunc2事件声明与使用3事件和委托区别与联系4观察者模式5标准事件[参数(Object sender,...委托是一种类型事件是一个委托实例Event,不能直接赋值 ,也不能直接调用 a.fun=funA,ev...
  • C# Event

    2012-08-31 00:06:00
    C#建立Event有5步: 一: 最外面声明Delegate: ...二:建立含有私有类的Event(被别人使用): class MyClass() {  ...  public event MyEventHandler MyEvent;   ... } 三:建...
  • c# 事件 event 解析

    2019-08-01 09:43:05
    大家都知道windows消息处理机制重要,其实C#事件就是基于windows消息处理机制,只是封装更好,让开发者无须知道底层消息处理机制,就可以开发出强大基于事件应用程序来。 先来看看事件编程有哪些好处。 ...
  • event是一种特殊签名格式delegate,event的定义必须在类内,delegate可以脱离类存在。 event的引发是通过调用委托实现,而委托不仅仅用来实现事件引发。 通过加入event关键字,在编译时候编译器会自动...
  • C# Event/UnityEvent辨析

    万次阅读 多人点赞 2017-10-27 16:21:24
    Event作为C#语言特性的一部分,在.Net开发中具有比较重要的作用。当我们使用C#作为脚本语言编写Unity游戏时,也...然而,相比于传统C#语言的Event,UnityEvent基于Unity引擎做了一些改变,并且更加适合我们的游戏开发。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,064
精华内容 1,225
关键字:

c#的event

c# 订阅