C#ArrayList,泛型基础

1、ArrayList是一个极为方便的集合类,无需进行修改即可用于存储任何引用或值类型。但是添加的数据为值类型时需要装箱,检索时需要拆箱,装箱和拆箱会降低性能。故而提供了泛型。
eg、
泛型-类型名称:在调用时根据实参来确定T的类型
public static void print(T a)
{
Console.WriteLine (a);
}
public static void Main()
{
print(2); //T表示int型
print(2.35);//T表示double型
print("234");//T表示string型
}
2、泛型类
eg、
class Stack
{
private T[] array;
public Stack(int n)
{
array = new T[n];
}
public void print()
{
foreach (T item in array)
Console.WriteLine (item);
}
public T this[int index]
{
get{ return array [index];}
set{ array [index] = value;}
}
}
public static void Main()
{
Stack s1 = new Stack (5);//此时T表示整型
for (int i = 0; i < 5; i++)
s1 [i] = i * i;
s1.print ();
Stack s2 = new Stack (10);//此时T表示浮点型
for (int i = 0; i < 10; i++)
s2 [i] = (i + 0.01f) * (i + 0.01f);
s2.print ();
}
3、泛型不仅仅可以实现代码重用,减少了装箱和拆箱的过程。泛型是避免损失的有效方法。
eg、测试泛型和非泛型的执行时间 -->  添加一百万条数据
public static void testList()
{
Stopwatch watch = new Stopwatch ();
watch.Start ();
List l = new List ();
for (int i = 0; i < 1000000; i++) 
{
l.Add (i);
}
watch.Stop ();
//时间组合
TimeSpan span = watch.Elapsed;
Console.WriteLine (span.Milliseconds);//输出为毫秒
}
public static void testArrayList()
{
Stopwatch watch = new Stopwatch ();
watch.Start ();
ArrayList a = new ArrayList ();
for (int i = 0; i < 1000000; i++) 
{
a.Add (i);
}
watch.Stop ();
TimeSpan span = watch.Elapsed;
Console.WriteLine (span.Milliseconds);
}
public static void Main()
{
testList();
testArrayList();
}
输出结果:39
110
使用泛型执行效率大大提升了。
4、使用ArrayList,需要添加using System.Collections;
   使用List,需要添加using System.Collections.Generic;
   使用Stopwatch,需要添加using System.Diagnostics;

你可能感兴趣的:(C#)