什么是数组
数组是一个元素的序列,同一个数组中的所有元素具有相同的类型,这一点与类或结构中的域不同,类或结构中不同的域可以具有不同的类型。
(1) 一维数组
只包含单个序列的数组称为一维数组。
(2) 多维数组
多维数组通过一个或多个值进行索引。
数组的创建
声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面。在 C# 中,将方括号放在标识符后是不合法的语法。
初始化数组
初始化数组
C# 通过将初始值括在大括号 ({}) 内为在声明时初始化数组提供了简单而直接了当的方法。特别要注意的是,如果声明时未初始化数组,则数组成员自动初始化为该数组类型的默认初始值。
下面的示例展示初始化不同类型的数组的各种方法。
一维数组
int[] numbers = new int[5] {1, 2, 3, 4, 5};
string[] names = new string[3] {"Matt", "Joanne", "Robert"};
可省略数组的大小,如下所示:
int[] numbers = new int[] {1, 2, 3, 4, 5};
string[] names = new string[] {"Matt", "Joanne", "Robert"};
如果提供了初始值设定项,还可省略 new 语句,如下所示:
int[] numbers = {1, 2, 3, 4, 5};
string[] names = {"Matt", "Joanne", "Robert"};
多维数组
int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} };
可省略数组的大小,如下所示:
int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Ray"} };
如果提供了初始值设定项,还可省略 new 语句,如下所示:
int[,] numbers = { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} };
初始化数组变量
访问单个数组中元素
int[] pains = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
pains[2] = 6;//写入 给pains数组索引为2的元素赋值
console.writeline(pains[2]); //输出pains数组索引为2的元素
遍历整个数组
一维数组的遍历
int[] r = new int[] { 5, 21, 53, 65, 23, 12 };
for (int i = 0; i < r.length; i++)
{
console.writeline(r[i]);
}
//依次输出 5 21 53 65 23 12
二维数组的遍历
int[,] arr = new int [2, 3] { { 2, 5, 1 }, { 3, 6, 8 } };
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
Console.WriteLine(arr[i,j]);
}
}
//依次输出 2 5 1 3 6 8
数组循环赋值
int[] no=new int [5]{};
for (int i = 0; i < no.Length; i++)
{
int k = int.Parse(Console.ReadLine()); //获取输入的值
no[i] = k //注意 k是一个变量 每次循环k重新初始化
}
数组的排序
利用冒泡法进行排序
int[] r = new int[] { 5, 21, 53, 65, 23, 12 };
int temp;
for (int i = 0; i < r.Length - 1; i++) //Length-1代表程序最多做n-1次排序
{
for (int j = r.Length - 2; j >= i; j--)
{
if (r[j + 1] < r[j]) //交换元素位置
{
temp = r[j + 1]; //因元素交换位置,把其中一个值存起来,用于交换。
r[j + 1] = r[j];
r[j] = temp;
}
}
}
for (int i = 0; i < r.Length; i++)
{
Console.WriteLine(r[i]);
}