c#数组与arraylist入门教程大揭秘

发布时间:2020-09-13编辑:脚本学堂
本文介绍了c#数组与arraylist的用法,包括了多维数组、锯齿数组、 arraylist的用法与例子,感兴趣的朋友了解下。

在c#编程中,数组与arraylist可谓私空见惯,不过对于初学者来说,却不见得有多简单,这里jbxue小编整理了一些例子,大家参考下。

1、多维数组
多维数组:行数和列数在定义时已确定
 

复制代码 代码示例:

string[,] arr = new string[2, 3];
arr[0, 0] = "坐标:1-1";
arr[0, 1] = "坐标:1-2";
arr[0, 2] = "坐标:1-3";
arr[1, 0] = "坐标:2-1";
arr[1, 1] = "坐标:2-2";
arr[1, 2] = "坐标:2-3";

int m = arr.GetLength(0);// 行数
int n = arr.GetLength(1);// 列数

StringBuilder str = new StringBuilder();// 类似于String类型变量

for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
str.Append(arr[i, j] + "");
}
}
Console.WriteLine(str.ToString());

2、锯齿数组
锯齿数组:行数确定,列数不定,数组里套数组。
 

复制代码 代码示例:

int[][] arr = new int[3][];
arr[0] = new int[] { 1, 2, 3, 4 };
arr[1] = new int[] { 100 };
arr[2] = new int[] { 10, 20, 30 };

foreach (int[] i in arr) {
foreach (int x in i) {
Console.WriteLine(x); // 遍历所有元素
}
}
Console.WriteLine(arr[2][2]); // 访问单一元素,注意和多维素组的差别,会输出30

3、数组的常用操作
arr.Length属性:数组中元素个数;
arr.GetLength(n):获取数组arr第n维元素的个数;
arr.Rank:获取数组arr的维数;

1)、克隆数组,就是复制一份新的
 

复制代码 代码示例:
int[] arr = new int[] { 1, 2, 3, 4};
int[] arr2 = (int[])arr.Clone();
for (int i = 0; i < arr2.Length; i++)
{
Console.Write(arr2[i]);
}

4、ArrayList
命名空间:using System.Collections;
ArrayList就是传说中的动态数组,它可以动态的增加和减少元素,另外它可以存储任意个数和任意类型的元素。

属性
 

Count属性是目前ArrayList包含的元素的数量,这个属性是只读的
Capacity属性是目前ArrayList能够包含的最大数量,可以手动的设置这个属性,但是当设置为小于Count值的时候会引发一个异常。

方法
 

Add(v):添加一个元素(参数v,任何类型)到当前列表的末尾
AddRange方法用于添加一批元素到当前列表的末尾
Remove方法用于删除一个元素,通过元素本身的引用来删除
RemoveAt(i):方法用于删除一个元素,通过索引值(参数i)来删除
RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除
Insert用于添加一个元素到指定位置,列表后面的元素依次往后移动
InsertRange用于从指定位置开始添加一批元素,列表后面的元素依次往后移动
Clear():方法用于清除现有所有的元素
Contains(v):方法用来查找某个对象(参数v)在不在列表之中
ToArray(Type t):这个方法把ArrayList的元素Copy到一个新的数组中,参数为Type类型

1、简单使用
 

复制代码 代码示例:

ArrayList list = new ArrayList();// 声明变量

list.Add(2);
list.Add("北京");
list.Add(new int[] { 2, 4, 6 });
list.Add("南京");
list.Add(3);

foreach (var p in list) {
Console.Write(p.ToString() + " | ");// 输出:2 | 北京 | System.Int32[] | 南京 | 3 |
}

2、ArrayList与数组转换
元素类型相同的转换
 

复制代码 代码示例:

ArrayList list = new ArrayList();
list.Add(1);
list.Add(2);
list.Add(3);

// 转换方式1:ToArray()
int[] list2 = (int[])list.ToArray(typeof(int));

// 转换方式2:CopyTo()
int[] list3 = new int[list.Count];
list.CopyTo(list3);

3、元素类型不同的转换
 

复制代码 代码示例:

ArrayList arr = new ArrayList(){ "北京", 1}; //往数组中添加不同类型的元素

object[] arr2 = (object[])arr.ToArray(typeof(object)); //正确
string[] arr3 = (string[])arr.ToArray(typeof(string)); //错误