数组概述
数组是具有相同数据类型的一组数据的集合。
数组中的每一个变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。数组中的每个元素都有具有唯一的引索与其相对应,数组从零开始。
一个数组的定义需要包含一下几个元素:
- 元素类型
- 数组的维数
- 每个维数的上下限
例如
int [] a = new int[80];
一维数组
一维数组的创建
先声明再用new关键字进行内存分配
声明的一维数组使用以下形式
数组元素类型[] 数组名字;
例如
int [] arr ;
声明数组后还不能访问它的任何元素,因为声明数组只是给出了数组名字和元素的数据类型,想要真正使用数组还要为它分配内存空间,在为数组分配内存空间的同时,必须指明数组的长度。为数组分配内存空间的语法格式如下
数组名字 = new 数组元素类型[数组元素的个数] ;
例如
arr= new int [5];
注意:索引从0开始
声明的同时为数组分配内存
语法如下
数组元素类型[] 数组名= new 数组元素类型[数组元素的个数];
二维数组
声明如下
type[,]arrayName ;
type[][] arrayName ;
type : 二维数组的数据类型
arrayName:二维数组的名字
1.直接为每一维分配内存空间
例如
int [,] = new int [2,4] ;
创建一个int类型的二维数组a ,二维数组a中包括两个长度为4的一维数组
2.分别为每一个维分配空间
int [] [] a = new int [2][];
a [0] = new int [2] ;
a[1] = new int [3] ;
二位数组的初始化
1.为单个二维数组元素赋值
例如
int[,] myarr = new int [2,2];
myarr[0,0] = 0 ;
myarr[0,1] = 1 ;
myarr[1,0] = 1 ;
myarr[1,1] = 2 ;
2.为每一个维数组元素赋值
首先需要使用“数组类型[] [] ”形式声明一个数组,并指顶数组的行数,然后再分别为每一维数组赋值
例如
int [] [] myarr = new int [2] [] ;//定义了一个名为myarr的数组,有两行
myarr[0] = new int []{0,1 };//初始化第一行
myarr[1] = new int [] {1,2};//初始化二维数组的行
3.同时为整个二维数组赋值
例如
int [,] myarr = new int [2,2]{{0,1},{1,2}};
或者
int [,] myarr = new int [,]{{0,1},{1,2}};
或者
int [,] myarr = {{0,1},{1,2}};
数组与Array类
C#中的数组是由System.Array类派生而来的引用对象,可以使用Array类中的各种属性或者方法对数组进行各种操作。
例如:可以使用Array类的Length属性来获取数组元素的长度,可以使用Rank属性获取数组的维数
Array 类的常用方法以及说明
方法 | 说明 |
---|---|
Copy | 将数组中的指定元素复制到另一个Array中 |
CopyTo | 从指定目标的数组索引出开始,将当前一维数组中的所有普元素复制到另一个一维数组中 |
Exists | 判断数组中是否包含指定的元素 |
GetLength | 获取Array的指定维中元素数 |
GetLowerBound | 获取Array中的指定维度的下限 |
GetUpperBound | 获取Array中的指定维度的上限 |
GetValue | 获取Array中指定的值 |
Reverse | 反转一维中Array中元素的顺序 |
SetValue | 设置Array中指定位置的元素 |
Sort | 对一位Array 数组元素进行排序 |
以打印杨辉三角为例
int[][] Array_int = new int[10][];
for (int i = 0; i < Array_int.Length; i++)
{
Array_int[i] = new int[i + 1];
for(int j = 0; j < Array_int[i].Length; j++)
{
if (i <= 1)
{
Array_int[i][j] = 1;
continue;
}
else
{
if (j == 0 || j == Array_int[i].Length - 1)//如果是行首或者行尾
{
Array_int[i][j] = 1;
}
else//否则根据杨辉算法进行运算
{
Array_int[i][j] = Array_int[i - 1][j - 1] + Array_int[i - 1][j];
}
}
}
}
for(int i = 0; i <= Array_int.Length - 1; i++)
{
for (int k = 0; k <= Array_int.Length - i; k++)
{
Console.Write(" ");
}
for(int j = 0; j < Array_int[i].Length; j++)
{
Console.Write("{0} ", Array_int[i][j]);
}
Console.WriteLine();
}
Console.ReadLine();