集合和泛型

数组
    数组的优点:数组在内存中连续存储,可以快速而容易的从头到尾的遍历元素,可以快速的修改元素;缺点:创建时必须要指定数组变量的大小,还有就是两个元素之间添加元素比较困难。
集合
    .net Framework提供了用于数据存储和检索的专用类,这些类统称集合。这些类提供对堆栈、队列、列表和哈希表的支持。大多数集合类实现相同的接口。
ArrayList
    ArrayList是命名空间System.Collections下的一部分,他是使用可用大小可按需动态增加的数组实现IList接口。
    ArrayList的容量是ArrayList可以保存的元素数。ArrayList的默认初始容量为0,随着元素添加到ArrayList中,容量会根据需要通过重新分配自动增加。使用索引可以访问此集合中的元素。此集合中的索引从0开始。
    
动物叫声比赛ArrayList表示如下:
public   class  Match
    {
        
// 声明一ArrayList集合变量
        ArrayList arrAnimal;
        
private   string   ShoutMatch()
        {
            
string  Result  =   "" ;
            
// 实例化ArrayList对象,注意此时没有指定ArrayList大小
            arrAnimal = new  ArrayList();
            
// 调用集合的Add方法添加对象,其参数的Object,所以new Cat和new Dog都没有问题
            arrAnimal.Add( new  Cat( " 小花 " ));
            arrAnimal.Add(
new  Dog( " 阿毛 " ));

            
// 集合的Count可以得到当前元素的数量
             int  AnimalCount = arrAnimal.Count;

            
foreach  (Animal item  in  arrAnimal)
            {
                Result 
=  Result  +  item.Shout() + " ; " ;
            }
            
return  Result;
        }
    }

    移除指定索引的集合:
小花和阿毛退赛:
 arrAnimal.RemoveAt( 0 );
 arrAnimal.RemoveAt(
1 );
集合的变化是影响全局的,他始终要保证元素的连续性。所以上面的写法是错误的。正确的写法应该是:
 arrAnimal.RemoveAt( 0 );
 arrAnimal.RemoveAt(
0 );
     ArrayList不是类型安全的。
    装箱:就是把值类型打包到Object引用类型的一个实例中。
    
int  i = 123 ;
object  o = ( object )i; // boxing
     拆箱:就是指从对象中提取值类型。
    
o=123 ;
i
=(int)o;//unboxing
    相对于简单的赋值而言,装箱和拆箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个全新的对象。其次,拆箱所需的强制转换也需要进行大量的计算。


泛型
    泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所有存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所有存储的对象的类型占位符;类型参数作为其字段的类型和其方法的参数类型出现。
    
泛型集合需要System.Collections.Generic的命名空间。而List类是ArrayList类的泛型等效类。该类使用大小可按需动态增加的数组实现IList泛型接口。其实用法上关键就是在IList和List后面加'<T>',这'T'就是你需要指定的的集合的数据或对象类型。
     通常情况下,都建议使用泛型集合。因为这样可以获得类型安全的直接优点而不需要从基集合类型派生并实现类型特定的成员。此外,如果几何元素为值类型,泛型集合类型的性能优于对应的非泛型集合类型(并优于从非泛型集合类型派生的类型),因为使用泛型是不必对元素进行装箱。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值