Net中事件的高级用法之三

1.事件的高级应用

使用事件可以解除代码耦合

2.事件高级应用实例

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

namespace MyEvent
{
    public delegate void MiaoEventDelegate();
    public class Cat
    {
        public event MiaoEventDelegate MiaoEventHandler;
        public void Miao()
        {
            Console.WriteLine("猫,苗一声");
            Mouse.Run();
            Dog.Wang();
            Neighbor.Awake();
            Stealer.Hide();
            Baby.Dry();
        }
        public void MiaoEvent(){
            Console.WriteLine("**************MiaoEvent*****************");
            Console.WriteLine("另外一只猫,喵一声");
            if (MiaoEventHandler !=null)
            {
                MiaoEventHandler();
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyEvent
{
    public class Baby
    {
        public static void Dry()
        {
            Console.WriteLine("小孩子哭");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyEvent
{
    public class Dog
    {
        public static void Wang()
        {
            Console.WriteLine("狗叫");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyEvent
{
    public class Mouse
    {
        public static void Run()
        {
            Console.WriteLine("老鼠跑");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyEvent
{
    public class Neighbor
    {
        public static void Awake()
        {
            Console.WriteLine("邻居被吵醒");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyEvent
{
    public class Stealer
    {
        public static void Hide(){
            Console.WriteLine("小偷藏起来");
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyEvent
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("欢迎来的流星小子博客学习");
            Cat cat = new Cat();
           // cat.Miao();
            cat.MiaoEventHandler += Mouse.Run;
            cat.MiaoEventHandler += Dog.Wang;
            cat.MiaoEventHandler += Neighbor.Awake;
            cat.MiaoEventHandler += Stealer.Hide;
            cat.MiaoEventHandler += Baby.Dry;
            cat.MiaoEvent();

            Console.Read();
        }
    }
}
时间: 2024-12-09 04:59:47

Net中事件的高级用法之三的相关文章

详解Vue中watch的高级用法

我们通过实例代码给大家分享了Vue中watch的高级用法,对此知识点有需要的朋友可以跟着学习下. 假设有如下代码: 上面的代码的效果是,当我们输入firstName后,wacth监听每次修改变化的新值,然后计算输出fullName. handler方法和immediate属性 这里 watch 的一个特点是,最初绑定的时候是不会执行的,要等到 firstName 改变时才执行监听计算.那我们想要一开始就让他最初绑定的时候就执行改怎么办呢?我们需要修改一下我们的 watch 写法,修改过后的 wa

正则表达式中分组功能高级用法

通过将部分正则表达式用括号括住来实现分组捕获的用法大部分人都很熟悉,如/.+(\d+).+/捕获字符串中的所有数字部分,然后通过组号就可以抽取出各分组匹配的字符文本或者通过反向引用的方式对分组中的文本进行替换.但是除了不同的分组用法以外,正则表达式引擎还提供了一些高级的分组功能,下面介绍部分比较常用的特殊分组: 1.非捕获分组( non-capturing group) 使用语法:(?:regex)这里的?和:都是语法的组成部分:这种分组正则表达式引擎不会捕获它所匹配的内容即不会为非捕获型分组分

SQL语句中的select高级用法

为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+-----------+ | id | name | age | height | gender | cls_id | is_delete | +----+-----------+------+--------+--------+--------+-----------+ | 1 | 小明 | 18 | 180.00 | 女

Vue.js中 watch 的高级用法

假设有如下代码: <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text" v-model="firstName"></p> </div> new Vue({ el: '#root', data: { firstName: 'Dawei', lastName: 'Lou', fullName: '' },

Vue中watch的高级用法

<template> <div> <input type="text" v-model="value"> </div> </template> <script> export default { data() { return { value:null } }, created(){ this.test() }, methods: { test(){ console.log("第一个加

ios中webview的高级用法

转自:http://www.cnblogs.com/gcb999/p/3178728.html 框架: webview与js的通信框架 #import "MJViewController.h" #import "MBProgressHUD+Add.h" @interface MJViewController () @end @implementation MJViewController - (void)viewDidLoad { [super viewDidLoa

RAC中常见的高级用法-bind方法

RAC操作思想: Hook(钩子)思想 RAC核心方法:bind bind方法 假设想监听文本框的内容,并且在每次输出结果的时候,都在文本框的内容拼接一段文字“输出:” 方式一:在返回结果后,拼接. [_textField.rac_textSignal subscribeNext:^(id x) { NSLog(@"输出:%@",x); }]; 方式二:在返回结果前,拼接,使用RAC中bind方法做处理. bind方法参数:需要传入一个返回值是RACStreamBindBlock的bl

RAC中常见的高级用法-过滤

filter 过滤信号,使用它可以获取满足条件的信号. - (void)filter { //只有当我们文本框内容长度大于5才想要获取文本框的内容 [[_passWord.rac_textSignal filter:^BOOL(id value) { //value:源信号的内容 return [value length] > 5; //返回值就是过滤的条件,只有满足这个条件才能获取到内容 }] subscribeNext:^(id x) { NSLog(@"%@", x); }

js中“||”和“&amp;&amp;”的高级用法

例1:用于赋值 &&:从左往右依次判断,当当前值为true则继续,为false则返回此值(是返回未转换为布尔值时的原值哦)|| : 从左往右依次判断,当当前值为false则继续,为true则返回此值(是返回未转换为布尔值时的原值哦) // => aaa var attr = true && 4 && "aaa"; // => 0 var attr = true && 0 && "aaa