C#中的数组的使用
一维数组
首先我们来看一下如何声明以及创建数组呢?
创建数组的方法如下:
数组元素类型[] 数组名 = new 数组元素类型[数组元素个数]
对应的代码实例如下:const int arrayNum = 4; int[] intArray = new int[arrayNum];
注意点:
我们看一下数组创建后内存的分配情况:
上图中的数组的首地址存放在数组名中哦~然后我们来看一下一维数组中 Length 的使用!
Length用于得到数组元素的个数,用法如下:
数组名.Length
代码实例:Console.WriteLine(intArray.Length);//这时候控制台会打印数组大小 4
最后我们看看如何初始化数组
一般的如果数组是基本数据类型,系统会赋予每个元素一个默认值。
初始化数组的方法有如下两种:初始化方法1:
第一种方式也是最直接的方式,实例代码如下:for (int i = 0; i < intArray.Length; i++) { intArray[i]=i+1; }
初始化方法2:
第二种方法是在数组声明的同时初始化数组:可以有一下三种形式,比如第一种:
int[] intArray = new int[arrayNum]{1,2,3,4};
第二种与第一种不同的是不同的是,它可以省略不写 [ ] 里面数组的大小:
int[] intArray = new int[]{1,2,3,4,5,6};
第三种方法是可以省略关键字 new,代码如下:
int[] intArray ={1,2,3,4,5,6};
二维数组
二维数组的声明以及创建
二维数组的声明以及创建相对于一维数组来说要复杂一些,创建二维数组有如下两种方式:方法一
说明:通过这种方式创建出来的数组称为 规则状二维数组 ,所以创建这个 数组的第二个参数必须要指定大小(也就是下面[3, 4]中的4)。int [,]intArray =new int[3,4];
方法二
说明:通过这种方式创建出来的数组称为 锯齿状数组 ,所以创建这个数组的第二个参数是不写的,如下代码:int[][] intArray = new int[3][];
也就是说构成这歌二维数组的以为数组的不必有相同的大小。
- Length的使用
对于Length的使用,我们要记住以下两点,(1).对与规则数组,我们得到的是这个二维数组包含的数组的中个数:如int [,]intArray =new int[3,4];
,那么intArray.Length
得到的值为3*4=14;(2)。对于不规则数组,我们得到的是这个锯齿状数组中含有的一维数组的个数,如int[][] intArray = new int[3][];
,则对应的intArray.Length
的值就是3了。 二维数组的初始化
二维数组的初始化对应的有如下三种方式:初始化方法一
- 锯齿状二维数组的初始化
static void Main(string[] args) { int[][] intArray = new int[3][]; for (int i = 0; i < intArray.Length; i++) { intArray[i] = new int[i + 1];//创建二维数组中每个一维数组的个数 for (int j = 0; j < intArray[i].Length; j++) { intArray[i][j] = i + j; } } for (int i = 0; i < intArray.Length; i++){ for (int j = 0; j < intArray[i].Length; j++){ Console.Write(intArray[i][j]+" "); } Console.WriteLine(); } /** * 打印的结果为 * 0 * 1 2 * 2 3 4 */ }
- 规则的二维数组初始化
static void Main(string[] args) { int[,] intArray = new int[3,4]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { intArray[i,j] = i + j; } } for (int i = 0; i < 3; i++){ for (int j = 0; j < 4; j++){ Console.Write(intArray[i,j]+" "); } Console.WriteLine(); } /** * 打印的结果为 * 0 1 2 3 * 1 2 3 4 * 2 3 4 5 */ }
初始化方法2(规则数组)
第二种方法也是在数组创建的时候进行初始化,有一下三种形式:指定二维数组的大小
int[,] intArray = new int[2,3]{{1,2,3},{4,5,6}}; /** * 打印的结果为 * 1 2 3 * 4 5 6 */
不指定二维数组的大小
int[,] intArray = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } ,{7,8,9}}; /** * 打印的结果为 * 1 2 3 * 4 5 6 * 7 8 9 */
省略 new 关键字
int[,] intArray = { { 1, 2, 3 }, { 4, 5, 6 } ,{7,8,9}}; /** * 打印的结果为 * 1 2 3 * 4 5 6 * 7 8 9 */
初始化方法三(不规则数组)
- 依次初始化二维数组中的每个一维数组
static void Main(string[] args) { int[][] intArray = new int[2][]; //依次初始化二维数组中的每个一维数组 intArray[0] = new int[] { 1, 2, 3, 4 }; intArray[1] = new int[] { 1, 2 }; for (int i = 0; i < intArray.Length; i++) { for (int j = 0; j < intArray[i].Length; j++) { Console.Write(intArray[i][j] + " "); } Console.WriteLine(); } /** * 打印的结果为 * 1 2 3 4 * 1 2 */ }
- 依次初始化二维数组中的每个一维数组
数组与System.Array
System.Array:是所有数组类型的抽象基类型,所有的数组类型都是由它派生而来,任何数组都可以使用它说具有的方法和属性。
- System.Array所具有的属性和方法如下
(1). Length属性用以获取数组的长度(具体用法见上文)。
(2). (要是规则数组)数组名.GetLength(n)方法用于获取第n维的数组的长度。
(3). Sort方法可以对数组进行生序排序。
(4). Reverse 方法把数组的元素进行反序。
foreach语句
foreach循环用于遍历集合中的每个元素。被遍历的集合包括C#数组,System.Collection名称空间中的集合类,以及用户自定义的集合类(可以是任何支持IEnumerable接口的集合类)。示例代码如下:
static void Main(string[] args)
{
int[] intArray = new int[]{ 4, 5, 6 };
foreach(int i in intArray){
Console.Write(i + " ");
}
Console.WriteLine();
/**
* 输出的结果为
* 4 5 6
*/
}
动态数组ArrayList
- ArrayList在System.Collections命名空间中。
- ArrayList数组是可以动态扩充的(Array的容量是固定的)。
- ArrayList提供提供添加,插入,移除某一范围元素的方法。
- ArrayList数组是一维的。
我们看一下下面的程序实例:
class Program
{
static void Main(string[] args)
{
ArrayList arrayList = new ArrayList();
arrayList.Add(1); //添加操作
arrayList.Add(2);
arrayList.Add(3);
arrayList.Add(4);
printArrayList(arrayList); //输出结果 1 2 3 4
arrayList.Insert(2,30);
printArrayList(arrayList); //输出结果 1 2 30 3 4
arrayList.RemoveRange(1, 3);
printArrayList(arrayList); //输出结果 1 4
}
public static void printArrayList(ArrayList arrayList) {
for (int i = 0; i < arrayList.Count; i++) {
Console.Write(arrayList[i]+ " ");
}
Console.WriteLine();
}
}
在printArrayList这个函数中,我实现了ArrayList的遍历,其实除了上面的那种方法之外,还有其他的两种方法:
方法一
public static void printArrayList(ArrayList arrayList) { IEnumerator ie = arrayList.GetEnumerator(); while (ie.MoveNext()) { Console.Write(ie.Current.ToString() + " "); } Console.WriteLine(); }
方法二
public static void printArrayList(ArrayList arrayList) { foreach (Object obj in arrayList) { Console.Write(obj.ToString()+" "); } Console.WriteLine(); }
总结
以上的所有知识点基本就是C#数组的一些基本用法了!