C#数组基础及应用

@作者: 风不停息丶
在这里插入图片描述


一、什么是数组

从Array类派生的,一组数据类型相同的变量组合。一种空间连续的数据结构。
元素通过索引(位置的序号)进行操作。
在这里插入图片描述
定义数组语法:
声明数组
数据类型[] 数组名;
初始化数组
数组名 = new 数据类型[元素总数];

初始化的元素类型与声明时的类型必须相同。
例:
int[] array01 =new int[5];
string[] array02 =new string[3];


二、初始化数组

数组初始化后,内存中存储该数据类型的默认值。
– 整形为0
– 非整形为0.0
– char为\0
– string为 null
– bool为 false

  • 初始化+赋值
  • 可以在数组初始化的同时对元素进行赋值。
int[] array01 = new int[]{ 1,2,3,4,5 };
string[] array02 = new string[{"a","b","c"};
//初始化时[]内也可以填入数组长度,但必须与所赋值的元素总数一致。
double[] array03 = new double[2]{ 1.0,2.0 };
  • 声明+赋值
  • 程序员可以省略初始化,但编译器内部仍然会"new 数据类型[]”。
int[] array01 = {1,2,3,4,5 };//元素个数即为数组长度。

三、访问数组元素

  • 1、可以通过数组的索引(位置的序号)进行读写操作。
stringl array = new string[] {"a", "b","c"};
Console.WriteLine(array[0]); //获取数组第一个元素
Console.WriteLine(array[2]); //获取数组第三个元素
  • 2、可以通过 for 遍历、按照某种顺序访问每一个元素。

string[] array = new stringll{ "a"."b","c" };

//正序输出到控制台中:
	for (int i = O; i < array.Length; i++)
	{
		Console.WriteLine( array[i]);
	}

//倒序输出到控制台中:
for (int i = array.Length - 1; i >= O; i--)
	{
		Console.WriteLine( array[i]);
	}
  • 3、通过foreach 遍历.、foreach是一种更简单更明了的读取数组元素的语句。

局限性:
1、只能读取全部元素(语句本身)–不能修改元素
2、只能遍历实现Ienumerable接口的集合对象语法

string[] array = new string[]{ "a"."b"."c" };
	foreach (string item in array)
	{
		Console.WriteLine( item);
	}

四、数组中常用的方法及属性

常用的方法及属性语法
数组长度数组名.Length
清除元素值Array.Clear
复制元素Array.copy / 数组名.CopyTo
查找元素Array.IndexOf / Array.LastIndexOf
排序Array.Sort
反转Array.Reverse

五、数组的种类

1、一维数组

一维数组在数组中最常用,即将一组值存放到一个数组中,并为其定义一个名称,通过数组中元素的位置来存取值。

创建一维数组的语法形式如下:

//定义数组
数据类型[] 数组名;
//初始化数组中的元素
数据类型[] 数组名 = new 数据类型[长度];
数据类型[] 数组名 = {值 1, 值 2, …}
数据类型[] 数组名 = new 数据类型[长度]{值 1,值 2,…}

//定义 int 类型的数组
int[] a = {1,2,3};
//输岀数组中的一个元素
Console.WriteLine(a[0]);
//输出数组中的最后一个元素
Console.WriteLine(a[a.Length-1]);

2、多维数组

具有两个或多个索引的数组。
语法:

声明+初始化
数据类型[,] 数组名= new 数据类型[行数,列数];
例:string[] array01 = new string[3,2];

–初始化+赋值
数组名 = new数据类型[,] {元素1,元素2},{元素3,元素4}};
例:int[] array02 = new int[]{ {1,2}.{3,4} };

  • 实例:for循环遍历数组元素,以表格形式输出到控制台中
int[] array = new int[,]{ {1,2},{3,4} };
// array.GetLength(O)获取行数
for (int r = 0; r < array.GetLength(O); r++)
{
	//array.GetLength(1)获取列数
	for (int c = O; c < array.GetLength(1); c++)
	{
		Console.Write( array[r. c] +"\t");
	}
	Console.WriteLine();//换行
}

3、交错数组

元素为数组的数组,每个元素都是一个新的一位数组。
语法:
----定义
数据类型[][] 数组名 = new 数据类型[元素总数][];
string[][] array = new string[3][];
----赋值
数组名[索引] = new 数据类型[子元素数];
array[0] = new string[2];
----读写元素
数组名[元素索引][子元素索引]

  • 实例:输入学生数量,再针对每一位学生输入多少门科目(科目数量不相同),然后输入分数打印
private static void StudentSubjectScores()
        {
        	//获取学生数量和科目数量
            Console.WriteLine("请输入学生数量:");
            int student = int.Parse(Console.ReadLine());
            int[][] array = new int[student][];
            for (int i = 0; i < student; i++)
            {
                Console.WriteLine("请输入第{0}位学生的科目数量", i + 1);
                array[i] = new int[int.Parse(Console.ReadLine())];
            }
			//输入成绩
            for (int r = 0; r < array.Length; r++)
            {
                for (int c = 0; c < array[r].Length; c++)
                {
                    Console.WriteLine("请输入第{0}位学生的第{1}门成绩", r + 1, c + 1);
                    array[r][c] = int.Parse(Console.ReadLine());
                }
            }
			//打印成绩
            for (int r = 0; r < array.Length; r++)
            {
                for (int c = 0; c < array[r].Length; c++)
                {
                    Console.Write(array[r][c]);
                }
                Console.WriteLine();
            }
        }

4、参数数组

在方法形参中通过关键字params定义。
方法调用者可以传递数组,也可以传递一组数据类型相同的变量,甚至可以不传递参数。
注意:

参数数组必须在形参列表中的最后一位。只能在一维数组上使用params关键字。
WriteLine中使用占位符,就是通过参数数组实现的。

  • 实例:
private static int Add( params int[] array )
{
	int sum = 0;
	foreach (int item in array)//历遍数组里的每一个数
	{
		sum += item;//使每个数相加
	}
	return sum;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风不停息丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值