二、数组和ArrayList
- 数组
- 什么是数组?
数组是一种相同数据类型按顺序在内存中排列的集合。数组是Array的一个对象,属于引用类型,在栈中只存有数组首元素的地址。这样,使用数组就比定义多个变量要节省空间。
- 一维数组
- 判断一个类型是否是数组
-
static void Main(string[] args) { int[] array = new int[12]; Type type = array.GetType(); if (type.IsArray) Console.WriteLine("This array type is:{0}",type); else Console.WriteLine("Not an array"); }
2. 使用可变参数 param,计算一组数据的总和
static void Main(string[] args) { Console.WriteLine(sumNums(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)); Console.WriteLine(sumNums(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)); } static int sumNums(params int[] nums) { int sum = 0; for (int i = 0; i <= nums.GetUpperBound(0); i++) { sum += nums[i]; } return sum; }
- 二维数组
- 使用二维数组计算一组数据的平均值
-
static void Main(string[] args) { int[,] grades = new int[,] { {1, 82, 74, 89, 100}, {2, 93, 96, 85, 86}, {3, 83, 72, 95, 89}, {4, 91, 98, 79, 88} }; //获得二维数组的行和列 int rownum = grades.GetUpperBound(0), colnum = grades.GetUpperBound(1); int total ; for (int row = 0; row <= rownum; row++) { total = 0; for (int col = 0; col <= colnum; col++) { total+=grades[row, col]; } Console.WriteLine("Average:{0}",total/colnum); } }
- 锯齿数组
- 什么是锯齿数组?为什么要有锯齿数组?
-
二维数据:可以比作正方形或者矩形,它的每行都是有相同列的。
锯齿数组:可以比作一个不规则的图形,行中的每列又是一个一位数组
用途:一年有12个月,每个月有不同的天数,有些28天,有些30或31天。该案例如果用二维数组来实现,当中就会产生几个空列,锯齿数据就能满足这种需求。 - 锯齿数组的遍历(方式一)
-
int[][] array = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7, 8 } }; int rownums = array.GetUpperBound(0);//得到锯齿数组的行 int colnums; for (int row = 0; row <= rownums; row++) { colnums = array[row].GetUpperBound(0);//得到当前行有N个元素 for (int col = 0; col <=colnums; col++) { Console.WriteLine(array[row][col]); } }
- 锯齿数组的遍历(方式二)
-
int[][] array = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7, 8 } }; foreach (var row in array) { foreach (var item in row) { Console.WriteLine(item); } }
- ArrayList
- 使用场景
-
数组:固定不可变的大小
ArrayList:大小可变。 - 常用属性和方法
-
Add( ):向ArrayList添加一个元素。
AddRange( ):在ArrayList末尾处添加群集的元素。
Capacity:存储ArrayList所能包含的元素的数量。
Clear( ):从ArrayList中移除全部元素。
Contains( ):确定制定的对象是否在ArrayList内。
Copy To( ):把ArrayList或其中的某一段复制给一个数组。
Count:返回ArrayList中当前元素的数量。
GetEnumerator( ):返回迭代ArrayList的计数器。
GetRange( ):返回ArrayList的子集作为ArrayList。
IndexOf( ):返回指定数据项首次出现的索引。
Insert( ):在ArrayList的指定索引处插入一个元素。
InsertRange( ):从ArrayList指定索引处开始插入群集的元素。
Item( ):在指定索引处获取或者设置一个元素。
Remove( ):移除指定数据项的首次出现。
RemoveAt( ):在指定索引处移除一个元素。
Reverse( ):对ArrayList中元素的顺序进行反转。
Sort( ):对ArrayList中的元素按照阿拉伯字母表顺序进行排序。
ToArray( ):把ArrayList的元素复制给一个数组。
TrimToSize( ):为ArrayList中元素数量设置ArrayList的容量。
-
- 使用场景

浙公网安备 33010602011771号