委托,Lambda,事件

委托


image.png

声明委托


image.png

Action和Func
image.png

Lambda


image.png

image.png

事件及事件的应用
image.png
 class Program
    {

        static void Main(string[] args)
        {
            
            Cat cat = new Cat("汤姆", 50);
            Mouse mouse1 = new Mouse("杰瑞", 10,cat);
            Mouse mouse2 = new Mouse("瑞士", 10,cat);
            cat.Caught();
            
            Console.ReadLine();

        }
    }
    class Cat
    {
        string name;
        int age;

        public Cat(string name, int age)
        {
            this.name = name;
            this.age = age;
        }
        public void Caught()
        {
            Console.WriteLine(name + "猫来抓老鼠了");
            if (catCome != null)
                catCome();
        }
        public event Action catCome;
    }
    class Mouse
    {
        string name;
        int age;

        public Mouse(string name, int age,Cat cat)
        {
            this.name = name;
            this.age = age;
            cat.catCome += Run;
        }
        public void Run()
        {
            Console.WriteLine(name + "快跑");
        }
    }

事件与委托的区别

事件不能再类的外部调用,可以在外部注册

委托可以在类的外部调用,可以在外部注册

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容