码迷,mamicode.com
首页 > Web开发 > 详细

.NET基础之集合

时间:2014-11-14 21:07:37      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   使用   sp   for   

集合可以说是数组的超集,集合可以维护对象数组,集合包含了更高级的功能。例如控制对其包含的对象的访问、搜索和排序等。数组是固定的,一旦我们创建好了数组,不能在现有数组的末尾添加新项,除非我们创建新的数组。

C#中的数组实现为System.Array类的实例,它们只是集合类中的一种,集合类的功能重要通过实现System.Collection名称空间中的接口而获得的。

 

System.Collection名称空间中的几个接口提供了基本的功能集合:

  • IEnumerable可以迭代集合中的项。这个接口中的唯一方法GetEnumerator()可以迭代集合中的各项。使用foreach结构的对象必须要实现这个方法
  • ICollection(继承与IEnumerable)可以获取集合中项的个数,并能把项复制到一个简单的数组类型中。ICollection中有CopyTo(System.Array array,int index)方法和Count属性
  • IList(继承于IEnumberable和ICollection)提供了集合的项列表,并可以访问这些项,以及其他一些与项列表有关的功能。bubuko.com,布布扣
  • IDictionary(继承于IEnumerable和ICollection)类似于IList,但提供了通过键码值而不是索引访问的项列表。          bubuko.com,布布扣

System.Array类实现了IList,ICollection,IEnumerable,但不支持IList的一些高级功能。

 

如何自定义集合类

    Collection类有接口IEnumerable,ICollection和IList,可以使用其提供的List和InnerList两个受保护的属性,它们可以访问存储的对象本身。

有一个Animal类:

Public class Animal
{
    //类成员
}

      实现它的集合:

Public class Animals : CollectionBase
{
    public void Add(Animal newAnimal)
    {
        List.Add(newAnimal);
    }

    public void Remove(Animal oldAnimal)
    {
        List.Remove(oldAnimal);
    }

    public Animals()
    {
    }
}

如果要通过索引访问,就要添加索引符。添加索引符如下:

public class Animals : CollectionBase
{
    ...
    public Animal this[int animalIndex]
    {
        get
        {
            return (Animal)List[animalIndex];
        }
        set
        {
            List[animalIndex] = value;
        }
    }
}

自定义Dictionary,使可以通过关键字访问

和上一个集合的实现例子非常类似,但是还是有一定的差别。要实现IDictionary接口,所以我们可以继承DictionaryBase,具体细节如下:

public class Animals : DictionaryBase
{
    public void Add(string newID, Animal newAnimal)
    {
        Dictionary.Add(newID, newAnimal);
    }
    
    public void Remove(string oldID)
    {
        Dictionary.Remove(oldID);
    }
    
    public Animals() {}

    public Animal this[string animalID]
    {
        get
        {
            return (Animal)Dictionary[animalID];
        }
        set
        {
            Dictionary[animalID] = value;
        }
    }
}

.NET基础之集合

标签:style   blog   http   io   color   ar   使用   sp   for   

原文地址:http://www.cnblogs.com/laoqi/p/4098040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!