C#中的集合、事件和委托

本文介绍了C#中的集合,如ArrayList、List、Dictionary、Queue和Stack,强调了List作为ArrayList的替代品的优势。接着讲解了字典Dictionary的使用方法,以及栈和队列的基本操作。此外,文章还探讨了委托的概念,如何声明和使用委托,并引入了C#3.0的Lambda表达式作为更简洁的方法定义方式。

集合1

定义:集合就是一种存放多个数据的容器类型,比如之前学过的数组Array(完整的类型是System.Array)。
预定义的常用集合:
动态数组:ArrayList;列表:List;字典:Dictionary;队列:Queue;栈:Stack。
动态数组ArrayList:

  • 初始化,可以不指定大小;
  • 获取长度,使用Count属性;
  • 添加Add;
  • 删除Remove,RemoveAt;
  • 访问[index];
    更好用的List:
    ArrayList是类型不安全的,而且有拆箱装箱的性能问题。于是出现了List,但List存储速度没有数组那么快。
    List<Dog> list= new List<Dog>();
    list.Add(new Dog("A"));
    list.Add(new Dog("B"));
    list.RemoveAt(1);
    for(int if =0,if<list.Count;i++)
    {
    list[i].PrintName();
    }

集合2

字典Dictionary<TKey,Tvalue>
定义:字典容器存储的是一系列的键值对,每个值对应一个唯一的键。键的意义在于,我们可以通过键相对的高效的访问到值。感觉与Java中的map类似。
字典操作
数量:Count;添加:Add(key,value);删除:Remove;访问:[key]。

Dictionary<string, Dog> dic = new Dictionary<string, Dog>();
dic.Add("A", new Dog("A"));
dic.Add("B", new Dog("B"));
dic["A"].PrintName();


定义:栈是先进后出,后进先出的一种容器。就好比是只有一个开口的羽毛球筒。
栈的操作

出栈:Pop;入栈:Push;获取栈顶元素:Peek。
Stack<Pet> stack = new Stack<Pet>();
stack.Push(new Dog("A"));
stack.Push(new Cat("B"));
stack.Peek().PrintName();
stack.Pop();
stack.Peek().PrintName();

队列
队列是先进先出的容器。类似两端开口的羽毛球筒。
队列的操作
出队 Dequeue;入队 Enqueue。

Queue<Pet> queue = new Queue<Pen>();
queue.Enqueue(new Dog("A"));
queue.Enqueue(new Dog("B"));
queue.Enqueue(new Dog("C"));
Pet pet = null;
pet = queue.Dequeue();
pet.PrintName();

委托

什么是委托
委托就是持有一个或者多个方法的对象!并且该对象可以执行,可以传递。
声明委托类型
委托可以持有方法,可以声明,它是一种引用类型!例如:

  • delegate void ActCute();

定义委托类型的对象

  • ActCute actCute;

给委托对象赋值

class Dog{
    public void WagTail(){..}
}
actCute =dog.WagTail;

使用委托类型
像调用函数一样使用委托类型。

  • actCute();

例如:

delegate void ActCute();
public void Look() { }
public void See() { }
...
ActCute del = null;
Dog dog = new Dog("A");
Cat cat =new Cat("B");
del = dog.See;
del +=Cat.Look;
del();

Lambda表达式

什么是匿名方法

delegate void ActCute();
ActCute del;
del = delegate(){};

c#3.0出现的Lambda表达式

del = delegate(){};
del = ()=>{};

例如:
上面的例子中:

del +=() =>{
Console.WriteLine("do nothing");
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值