zoukankan      html  css  js  c++  java
  • C#学习笔记三(委托·lambda表达式和事件,字符串和正则表达式,集合,特殊的集合)

    委托和事件的区别

    序号 区别 委托 事件
    1 是否可以使用=来赋值
    2 是否可以在类外部进行调用
    3 是否是一个类型 否,事件修饰的是一个对象
        public delegate void DelegateSayHello(); 
    
        public class A
        {
    
            public DelegateSayHello sayHello = new DelegateSayHello(PrintHello);
            public event DelegateSayHello say;
    
            public void PrintHello00()
            {
                say();
            }
    
            public static void PrintHello()
            {
                Console.WriteLine("A: Hello");
            }
        }
    
        public class B
        {
            public void PrintHello()
            {
                Console.WriteLine("B: Hello");
            }
        }
    
    
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("01--------------------------------");
    
                A a = new A();
                a.sayHello();//可以如同普通方法一样调用委托
    
                Console.WriteLine("02--------------------------------");
    
                B b = new B();
                a.sayHello += b.PrintHello;
                a.sayHello();//为委托添加多个方法
    
                Console.WriteLine("03--------------------------------");
    
                //a.PrintHello00();//如果事件say不进行赋值,那么将会抛出异常
                a.say += b.PrintHello;
                //a.say.Invoke();//在外部不能调用say事件,否则会报错
                a.PrintHello00();
            }
        }

    上面的代码充分说明事件其实委托的另一种表现形式,或者说是被限定的委托,event便可以认为是对这个委托的权限修饰符修饰符。

    如果一个委托加入多个有返回值的方法,那么返回的结果就是最后一个执行的方法的结果。

    对于异步编程,委托的异步函数EndeInvoke可以用来处理所有的结果。

  • 相关阅读:
    leetcode——448.找到所有数组中消失的数字
    leetcode——268.缺失数字
    leetcode——680.验证回文字符串2
    leetcode——125.验证回文串
    leetcode——217.存在重复元素
    leetcode——189.旋转数组
    02-04 线性回归
    02-03 感知机对偶形式(鸢尾花分类)
    02-02 感知机原始形式(鸢尾花分类)
    02-01 感知机
  • 原文地址:https://www.cnblogs.com/xiaoahui/p/10810736.html
Copyright © 2011-2022 走看看