`

C#之委托与事件

阅读更多

例子摘自<大话设计模式>

委托是一种引用方法的类型,一旦为委托分配方法,委托将与该方法具有完全相同的行为.

事件是说在发生其他类或对象关注的事情时,类或对象可通过事件通知它们.事件对象用event关键字声明

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class CatShotEventArgs : EventArgs
    {
        private string name;
        public string Name  // N为大写
        {
            get { return name; }
            set { name = value; } // value为隐藏值,C#与Java的不同用法
        }
    }

    class Cat
    {
        private string name;
        public Cat(string name)
        {
            this.name = name;
        }
        public delegate void CatShotEventHandler(object sender, CatShotEventArgs args);
        public event CatShotEventHandler CatShout;
        public void Shout()
        {
            Console.WriteLine("Hi, I'm {0}.", name);
            if (CatShout != null)
            {
                CatShotEventArgs e = new CatShotEventArgs();
                e.Name = this.name;
                CatShout(this, e);
            }
        }

    }

    class Mouse
    {
        private string name;
        public Mouse(string name)
        {
            this.name = name;
        }
        public void Run(object sender, CatShotEventArgs args)
        {
            Console.WriteLine("Cat {0} is coming, {1} run! ", args.Name, name);
        }
    }
   
    class Program
    {
        static void Main(string[] args)
        {
            Cat cat = new Cat("Tom");
            Mouse m1 = new Mouse("Jerry");
            Mouse m2 = new Mouse("James");

            cat.CatShout += new Cat.CatShotEventHandler(m1.Run);
            cat.CatShout += new Cat.CatShotEventHandler(m2.Run);

            cat.Shout();
            Console.Read();

        }
    }
}

 结果:



 

  • 大小: 9 KB
分享到:
评论

相关推荐

    C#中委托与事件的区别

    委托(Delegate)和事件(Event)是C#中非常重要的两种机制,它们在.NET框架中扮演着极其重要的角色。理解这两种概念,对于深入学习C#编程语言,构建高效、可维护的程序架构至关重要。首先我们来探讨一下委托的概念...

    C#中的委托和事件(完整版)

    详细讲述了C#中委托和事件的语法及其使用方法,用程序例子深入浅出的讲述了不同的使用方法和这些使用方法的优劣。

    C#--委托和事件

    ### C#中的委托和事件 #### 一、委托的基础概念 在C#中,委托是一种引用类型的数据结构,它允许将方法当作参数进行传递。简而言之,委托就是指向一个方法的引用。委托的主要用途是作为事件处理程序的类型。 **...

    C#的委托与事件的示例代码

    在C#编程语言中,委托和事件是两个关键的概念,它们是实现面向对象设计模式,尤其是事件驱动编程的基础。本文将深入探讨这两个概念,并通过实际的示例代码来阐述它们的工作原理。 首先,我们来理解什么是委托。在C#...

    C#委托与事件

    在C#编程语言中,委托和事件是两个非常重要的概念,它们构成了事件驱动编程的基础。...在实际项目中,结合文档《C#委托与事件.doc》的详细分析,初学者将更好地掌握这些概念,并能够在实践中得心应手。

    c#委托与事件实例讲解

    本文将深入探讨C#中的委托与事件,并通过实例来帮助理解它们的工作原理和使用场景。 首先,我们来了解什么是委托。在C#中,委托是一种类型安全的指针,它可以指向一个方法。换句话说,委托可以被视为能够存储方法的...

    详解C#委托,事件与回调函数

    详解 C# 委托、事件与回调函数 委托是 C# 中一种非常重要的概念,它可以将方法作为参数传递给其他方法,也可以将方法作为返回值返回给其他方法。委托的定义是:delegate 返回类型 委托名(参数列表);例如:...

    c#委托与事件的关系

    ### C#中的委托与事件关系解析 #### 一、引言 在面向对象编程语言C#中,委托(Delegate)和事件(Event)是两个重要的概念。本文将深入探讨这两者之间的关系及其在实际开发中的应用。 #### 二、委托(Delegate) ...

    C#的委托和事件详解

    委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就...

    C# 委托 线程 事件的事例代码

    在C#编程中,委托、线程和事件是三个核心概念,它们对于构建高效、响应式的多任务应用程序至关重要。下面将详细阐述这三个概念及其相互之间的关系,并通过一个实例代码进行说明。 1. 委托(Delegate): 委托在C#中...

    C# 委托和事件 (详细讲解)

    在C#编程语言中,委托和事件是两个关键的概念,它们是实现面向对象设计模式,尤其是事件驱动编程的核心。下面将详细阐述这两个概念及其在实际编程中的应用。 **委托** 委托在C#中相当于一种类型,它封装了指向方法...

    C# Socket异步通信+事件与委托+通信程序与界面分离

    本教程主要探讨如何使用C#的Socket实现异步通信,并结合事件和委托来处理通信过程中的消息传递,以及如何将通信逻辑与用户界面(UI)分离,以实现更高效、更灵活的程序设计。 首先,让我们理解什么是Socket异步通信。...

    C# 事件委托简单封装示例

    在C#编程中,事件和委托是核心特性之一,它们为构建可扩展和灵活的代码提供了基础。事件委托的封装是提高代码复用性和模块化的重要手段。本示例将探讨如何在C#中实现事件委托的简单封装,并提供一个实际的应用场景。...

    c#中委托,事件和BeginInvoke在进程间传递消息的作用

    委托、事件和BeginInvoke在C#中是实现进程间消息传递的重要概念和工具。委托可以理解为一个可以持有对具有特定参数列表和返回类型的方法的引用的类型。事件是一种特殊的委托,用于实现发布-订阅模式,其中发布者触发...

    C#.NET委托和事件电子书

    C#,.NET,委托,事件,电子书 C#,.NET,委托,事件,电子书 C#,.NET,委托,事件,电子书 C#,.NET,委托,事件,电子书 C#,.NET,委托,事件,电子书 C#,.NET,委托,事件,电子书 C#,.NET,委托,事件,...

    对C#委托及事件委托的理解

    2. **委托与System.Delegate**: 委托是从`System.Delegate`类派生的,但不能直接从`System.Delegate`派生新的委托类型。C#提供了一种特殊的语法来声明和使用委托,使其成为一种易于使用的抽象类型。 3. **静态与...

    C# 委托与事件

    委托是类型安全的,因为它们只能引用具有与之兼容签名的方法。 创建自定义委托的语法如下: ```csharp public delegate void MyDelegateType(int arg1, string arg2); ``` 这里,`MyDelegateType`是一个新的委托...

    C#委托 C#委托 C#委托

    委托与事件 委托在C#事件处理中扮演重要角色。事件本质上是私有的,只允许发布者(事件源)触发,而订阅者(事件处理程序)只能响应。委托在这里起到桥梁作用,连接事件源和处理程序。例如: ```csharp public ...

Global site tag (gtag.js) - Google Analytics