数组和集合

基本概念

  1. type[] identifier;

C#数组不同于C语言数组,因为它们实际上是System.Array对象。因此,C#数组通过属性和方法提供了只有类才有的灵活性和威力,但使 用的语法与C语言数组一样简单。

创建数组

int[] arrary = new int[5];
创建一个可包含5个int值的数组。
和C语言不同的是将“[ ]”放到变量名之前

交错数组

由于交错数组的每个元素又是一个数组,因此不同于矩形数组,交错数组每行的长度可以不同

  1. int [][] = {
  2. new[] {10},
  3. new[] {20,30},
  4. new[] {40,50,60}
  5. };
  6. int [,][] j2;
  7. j2 = new int[3,2][];//是一个泛型集合

数组索引

array[index] = value

数组初始化

  1. int[] arrary = int int[5];
  2. for(int i = 0;i < array.Length;i++)
  3. {
  4. array[i] = i*2;
  5. }
  6. int[] array = {1,2,3,5};
  7. int[,] array = { {0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9} };

System.Array类

是数组的基类,只有运行时和编译器可显示从它派生出起来类。

索引器

索引器可以像访问数组那样访问对象数据。
(一)索引器是用签名而不是名称标识的。
1.签名指其形参数量类型
(二)索引器只能是实例成员。
要声明索引器,可使用如下语法:

  1. type this [type parameter]
  2. {
  3. get;
  4. set;
  5. }
  6. class IndexerExample
  7. {
  8. private string[] array = new string[4] {"now","is","the","time" };
  9. public int Length
  10. {
  11. get
  12. {
  13. return this.array.Length;
  14. }
  15. }
  16. public string this[int index]
  17. {
  18. get
  19. {
  20. return this.array[index];
  21. }
  22. set
  23. {
  24. this.array[index] = value;
  25. }
  26. }
  27. }
  28. static void Main(string[] args)
  29. {
  30. IndexerExample example1 = new IndexerExample();
  31. for (int i = 0; i < 4; i++)
  32. {
  33. Console.WriteLine("index[{0}]={1}",i, example1[i]);
  34. }
  35. }

泛型集合

  1. using System.Collections;//非泛型类集合的命名空间。
  2. //非泛型类的集合 不固定数据类型
  3. using System.Collections.Generic;//泛型类集合的命名空间。

<1>非泛型类的集合和泛型类的集合的区别
前者是不固定数据类型 ,后者固定数据类型
比如非泛型集合的ArrayList及Hashtable.
只要定义了ArrayList arraylist=new ArrayList();

  1. arraylist.add("1");
  2. arraylist.add(100);


可以增加String类型,int类型的数据。
泛型版本的ArrayList 是List;

  1. List<String> list=new List<string>();
  2. list.add("bb");//这里只能添加String类型的数据



Hashtable与Distinctionary
<2>有了数组,为什么出现集合的概念?区别是?
数组长度是固定的。
集合的长度是不固定的

列表

列表也是使用数字索引的对象,不同的是可以在需要的时候动态调整**List的大小**。

List成员

声明List0