数组是什么?
可以将同一类型的多个变量存储在一个数组数据结构中。通过指定数组的元素类型来声明数组。如果希望数组存储任意类型的元素,可将其类型指定为object。在C#的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从Object继承的。
数组具有以下属性:
对于值类型,使用默认值(0位模式)初始化数组元素,元素将具有值0
所有引用类型(包括不可为null类型)都具有值null
对于可谓null的类型,HasValue设置为false,元素将设置为null
一、一维数组
使用new运算符创建一维数组,该运算符指定数组元素类型和元素数目。
以下示例声明一个包含三个整数的数组:
int[] ints1 = new int[3];
此数组包含从array[0]到array[2]的元素.数组的元素将初始化为元素类型对的默认值,0代表整数。
数组可以存储指定的任意元素类型,如声明字符串类型的数组:
string[] strings = new string[3];
数组的初始化不单单只有指定数组元素的长度,还可以在声明初始化数组的元素:
int[] int3 = { 1, 2, 3 };
字符串类型的数组也是如此:
string[] fruit = { "西瓜", "哈密瓜", "甜瓜" };
在声明初始化数组的时候,不使用new表达式和数组类型,这称为隐式类型化数组:
int[] int3 = { 1, 2, 3 };
string[] fruit = { "西瓜", "哈密瓜", "甜瓜" };
还有一种声明初始化数组的方法:
int[] ints2 = new int[3] { 1, 2, 3 };
所以说声明初始化数组,有三种方法:
1.int[] ints1 = new int[3];
2.int[] int3 = { 1, 2, 3 };
3.int[] ints2 = new int[3] { 1, 2, 3 };
要是想要数组中的元素,可以使用索引来检索数组中的数据。例如:
string[] fruit = { "西瓜", "哈密瓜", "甜瓜","苹果","雪梨" };
Console.WriteLine(fruit[0]);//西瓜
Console.WriteLine(fruit[1]);//哈密瓜
Console.WriteLine(fruit[2]);//甜瓜
Console.WriteLine(fruit[3]);//苹果
Console.WriteLine(fruit[4]);//雪梨
要是想让上面数组中的最后一个元素,不单单可以使用索引,还可以使用Length数组的长度减去1,因为数组中的索引是从0开始的,而数组的长度是从1开始的,那么就是数组的长度就是数组中元素的个数,那么用数组的长度减去1就是等同于数组中的最后一个元素的索引:
Console.WriteLine(fruit[fruit.Length-1]);//雪梨
要是数组中的元素不止5个呢,有上百个或上千个的元素,如果要其中的元素的话,难道就只能一个一个输出了吗?那么这样要输出到什么时候!其实还有一种可以通过循环输出的方法来输出每个元素。例如:
string[] fruit = { "西瓜", "哈密瓜", "甜瓜","苹果","雪梨" };
foreach (string item in fruit)
{
Console.WriteLine("foreach输出:{0}",item);
}
控制台输出:
要是想修改其中一个元素的值,那么可以通过索引来修改。例如:
string[] fruit = { "西瓜", "哈密瓜", "甜瓜","苹果","雪梨" };
fruit[2] = "猕猴桃";
foreach (string item in fruit)
{
Console.WriteLine("foreach输出:{0}",item);
}
控制台输出:
二维数组也称为多维数组
数组可以具有多个纬度。例如,下面声明一个具有三行三列的二维数组:
int[,] num = new int[3, 3];
以下声明具有三个纬度的数组:
int[,,] num2 = new int[3, 3, 4];
这样看来多一个纬度在定义时的[]中加上“,”来定义多维数组
多维数组初始化,如下:
int[,] num = new int[3, 3];
int[,] num2 ={ { 1, 2, 3 }, { 4, 8, 8 }, { 5, 8, 9 } };
int[,] num3 = new int[,] { { 1, 2, 3 }, { 4, 8, 8 }, { 5, 8, 9 } };
int[,] num4 = new int[3, 3] { { 1, 2, 3 }, { 4, 8, 8 }, { 5, 8, 9 } };
声明初始化多维数组的方法一样可以有很多种
字符串类型也是可行的:
string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };
要是想要数组中的元素,可以使用索引来检索数组中的数据。例如:
string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };
Console.WriteLine(str[0,0]);//桃子
Console.WriteLine(str[0,1]);//蓝莓
Console.WriteLine(str[0,2]);//青柚
Console.WriteLine(str[1,0]);//橘子
Console.WriteLine(str[1,1]);//橙子
Console.WriteLine(str[1,2]);//石榴
还可以通过循环来输出数组中的元素
1.
string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };
foreach (string item in str)
{
Console.WriteLine("foreach输出:{0}",item);
}
控制台输出:
2.
string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };
for (int i = 0; i < str.GetLength(0); i++)
{
for (int j = 0; j < str.GetLength(1); j++)
{
Console.Write(str[i, j] + "\t");
}
Console.WriteLine("\n");
}
控制台输出:
要是想修改元素的值,那么可以通过索引来修改。例如:
string[,] str = { { "桃子", "蓝莓", "青柚" }, { "橘子", "橙子", "石榴" } };
str[0, 2] = "香蕉";
str[1, 0] = "圣女果";
foreach (string item in str)
{
Console.WriteLine("foreach输出:{0}",item);
}
控制台输出: