c#数组利器——List<>

来源:互联网 发布:微信网页授权域名 编辑:程序博客网 时间:2024/05/23 01:59

处理数据经常用到数组,而很多时候又不能确定数组的大小,或数组大小是动态变化的。如果按照C语言的方法,只能预先定义一个尽量大的数组,无视数组后面元素浪费的空间。但这是非常不合算的,C#中提供了一个类:List<>,这个类可以实现动态大小的数组。

Namespace:  System.Collections.Generic
Assembly:  mscorlib (in mscorlib.dll)


看下面的例子,很好的诠释了List<>类的用法:(来自MSDN  http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx)


using System;using System.Collections.Generic;public class Example{    public static void Main()    {        List<string> dinosaurs = new List<string>();        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);//注意Capacity和Count是不同的概念,Capacity以2的整数次幂往上长        dinosaurs.Add("Tyrannosaurus");//添加。默认加到数组的最末尾        dinosaurs.Add("Amargasaurus");        dinosaurs.Add("Mamenchisaurus");        dinosaurs.Add("Deinonychus");        dinosaurs.Add("Compsognathus");        Console.WriteLine();        foreach(string dinosaur in dinosaurs)        {            Console.WriteLine(dinosaur);        }        Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);        Console.WriteLine("Count: {0}", dinosaurs.Count);        Console.WriteLine("\nContains(\"Deinonychus\"): {0}",            dinosaurs.Contains("Deinonychus"));//判断是否存在某个元素        Console.WriteLine("\nInsert(2, \"Compsognathus\")");        dinosaurs.Insert(2, "Compsognathus");//插入        Console.WriteLine();        foreach(string dinosaur in dinosaurs)        {            Console.WriteLine(dinosaur);        }        Console.WriteLine("\ndinosaurs[3]: {0}", dinosaurs[3]);//可以这样像数组一样直接调用        Console.WriteLine("\nRemove(\"Compsognathus\")");        dinosaurs.Remove("Compsognathus");//移除元素        Console.WriteLine();        foreach(string dinosaur in dinosaurs)        {            Console.WriteLine(dinosaur);        }        dinosaurs.TrimExcess();//手动设置Capacity的大小,使其等于Count值,这样就一个空间都不浪费了        Console.WriteLine("\nTrimExcess()");        Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);        Console.WriteLine("Count: {0}", dinosaurs.Count);        dinosaurs.Clear();//清空,count变为零,但是Capacity的值没有变        Console.WriteLine("\nClear()");        Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);        Console.WriteLine("Count: {0}", dinosaurs.Count);    }}/* This code example produces the following output:Capacity: 0TyrannosaurusAmargasaurusMamenchisaurusDeinonychusCompsognathusCapacity: 8Count: 5Contains("Deinonychus"): TrueInsert(2, "Compsognathus")TyrannosaurusAmargasaurusCompsognathusMamenchisaurusDeinonychusCompsognathusdinosaurs[3]: MamenchisaurusRemove("Compsognathus")TyrannosaurusAmargasaurusMamenchisaurusDeinonychusCompsognathusTrimExcess()Capacity: 5Count: 5Clear()Capacity: 5Count: 0 */

在C#中还有一个类:Array,用法与List相似,但是不能动态改变大小,另外,Array的处理效率比List要高一些。


原创粉丝点击