一、数组与数组列表 C#中的数据与Actionscript中的数组不同。在C#中数组Array 的容量是固定的,Actionscript中的数组更类似于C#中的ArrayList。ArrayList 提供添加、插入或移除某一范围元素的方法,在 Array 中只能一次获取或设置一个元素的值。 比如在Actionscript中,声明一个数组通常写为
var array:Array = new Array(5); array[5] = 1;
数组的容量为5,当索引超出了数组界限时Flash会自动分配新的空间给数组。此时数组的容量自动变为6。而在C#中,如若写下
int[] array = new int[5]; array[5] = 1;
是不能编译通过的,程序抛出"System.IndexOutOfRangeException”异常,提示索引超出了数组界限。如果要使用类似Actionscript的功能,不妨使用下面的方法:
System.Collections.ArrayList array = new System.Collections.ArrayList(5); for (int i = 0; i <= 6; i++) array.Add(i);
二、字典(Dictionary) Dictionary是另一个常用的集合类,不论是C#还是Actionscript。字典(Dictionary)类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成。通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictionary 类是作为一个哈希表来实现的。 在具体使用时,Actionscript与C#还是有所区别。比如在Actionscript中:
var dict = new Dictionary(); dict["key"] = "value"; trace("Key 'key' in dict is" + dict["key"]);
而在C#中,需要使用Dictionary.add()方法:
Dictionary<string, string> dict = new Dictionary<string, string>(); dict.Add("key", "value"); Console.WriteLine("Key \"key\" in dict is {0}.", dict["key"]);
此外C#中的Hashtable提供了和Dictionary类似的功能,按其元素的哈希代码对元素排序。Hashtable 中的每个键对象必须提供其自己的哈希函数,可通过调用 GetHash 访问该函数。
Hashtable dict = new Hashtable(); dict .Add("key", "value");
|