网易云课堂C#面对对象编程Two

xiaoxiao2021-02-28  48

集合:动态数组(ArrayList),列表(List),字典(Dictionary),队列(Queue),栈(Stack)

委托:委托是持有一个或者多个方法的对象,并且该对象可以被执行。委托也可以声明,是一种引用类型

delegate void ActCute();

既然是一种类型,则可以定义该类型的对象

ActCute actcute;

例子:

abstract public class Pet { public string _name; public Pet(string name) { _name = name; } } public class Dog : Pet { public Dog(string Name) : base(Name) { } public void WagTail() { Console.WriteLine(_name+"wag tail"); } } public class Cat: Pet { public Cat(string Name) : base(Name) { } public void InnocentLook() { Console.WriteLine(_name + "InnocentLook"); } } class program { delegate void ActCute();//主函数外声明委托 public static void Main(string[] args) { Dog dog = new Dog("A"); Cat cat = new Cat("B"); ActCute del = null; del = dog.WagTail; del += cat.InnocentLook;//给委托添加方法 del(); Console.ReadKey(); } }

Lambda表达式:

匿名方法:

delegate void ActCute(); ActCute del; del=delegate(){...};//声明匿名方法 即del=()=>{...};

例:

class program { delegate void ActCute(); public static void Main(string[] args) { Dog dog = new Dog("A"); Cat cat = new Cat("B"); ActCute del = null; del = dog.WagTail; del += cat.InnocentLook; del += () => { Console.WriteLine("do nothing"); };//添加匿名方法 del(); Console.ReadKey(); } }

事件:

发布者和订阅者:通知某件事情发生的是发布者。对某件事情关注的就是订阅者。

触发和注册:事件发生时,通知所有关注该事件的订阅者。想在事件发生时被通知,订阅者必须注册以表示关注。

用程序语言解释:时间发生时,通知订阅者即调用订阅者的注册函数。注册,就是告诉发布者调用哪一个注册函数。

例:

abstract public class Pet { public string _name; public Pet(string name) { _name = name; } } public class Dog : Pet { public delegate void Handler();//声明委托。 public static event Handler NewDog;//声明事件 public Dog(string Name) : base(Name)//触发条件即事件发生,即触发条件是new了一条新狗 { if (NewDog != null) { NewDog(); } } } class Client//订阅者 { public void WantDog() { Console.WriteLine("Buy a dog"); } } class program { public static void Main(string[] args) { Client c1 = new Client();//创建订阅者 Client c2 = new Client(); Dog.NewDog += c1.WantDog;//订阅,订阅者告诉触发者,当事件发生时要触发自己的哪个方法 Dog.NewDog += c2.WantDog; Dog dog = new Dog("A");//new 出新狗,触发NewDog()中的方法 Console.ReadKey(); } }

事件即先声明委托,然后声明事件。创建订阅者和订阅者的方法,创建触发事件。将订阅者想在事件触发时所执行的方法委托给事件。最后当事件发生时,所有订阅者注册的方法都被执行。

转载请注明原文地址: https://www.6miu.com/read-2621238.html

最新回复(0)