列表,数组
掌握数组的定义、初始化与遍历
掌握泛型列表
List<T>的增删改查区分数组和列表的适用场景
核心讲解
(1)数组
存储相同类型数据的连续内存空间,长度创建后固定不变。
声明:
类型[] 数组名初始化:
new 类型[长度]或者{元素1, 元素2...}访问:下标从 0 开始,
数组名[索引]长度:
数组名.Length
(2)List<T> 泛型列表
长度可变的动态数组,是最常用的集合类型。
泛型
<T>指定存储的元素类型,类型安全命名空间:
System.Collections.Generic常用成员:
Add(item):末尾添加元素Insert(index, item):指定位置插入Remove(item)/RemoveAt(index):删除this[index]:索引访问Count:元素数量Clear():清空Contains(item):是否包含
(3)遍历方式
普通 for 循环:需要索引时用
foreach 遍历:只遍历元素,最简洁,推荐
操作步骤
编写数组的创建、访问、遍历代码
编写 List 的增删改查代码
运行验证结果
代码示例
using System.Collections.Generic;
// ===== 数组 =====
int[] nums = { 10, 20, 30, 40, 50 };
Console.WriteLine("数组长度:" + nums.Length);
Console.WriteLine("第一个元素:" + nums[0]);
// for 遍历
Console.WriteLine("\nfor遍历数组:");
for (int i = 0; i < nums.Length; i++)
{
Console.Write(nums[i] + " ");
}
// ===== List<T> 列表 =====
List<string> fruits = new List<string>();
// 添加
fruits.Add("苹果");
fruits.Add("香蕉");
fruits.Add("橙子");
fruits.Insert(1, "葡萄");
Console.WriteLine("\n\n列表数量:" + fruits.Count);
Console.WriteLine("第2个:" + fruits[1]);
// 删除
fruits.Remove("苹果");
// foreach 遍历
Console.WriteLine("\nforeach遍历列表:");
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
// 转数组
string[] arr = fruits.ToArray();
Console.ReadKey();
常见误区
数组下标从 1 开始:下标从 0 开始,最大下标 = 长度 - 1,越界会抛异常
List 用基本类型错:泛型可以用基本类型,C# 会自动装箱,和 Java 不同
遍历的时候删除元素:foreach 遍历中删除元素会报异常,要用 for 倒序删
用 ArrayList 代替 List:ArrayList 是非泛型的,性能差、类型不安全,淘汰了,一律用
List<T>
课后练习
定义一个 int 数组,存 5 个成绩,计算总分和平均分
用 List 存储 3 个学生对象,添加、遍历、删除一个
对比数组和 List 的优缺点,分别说明适用场景

