基本概念
List
是 C# 中的一个通用集合类,它位于 System.Collections.Generic
命名空间下。List
类允许你存储同一类型的对象,并提供了动态调整大小的功能。它类似于数组,但比数组更灵活,因为它可以根据需要自动扩展和缩小。
用途
List
类可以用来存储和管理一组数据,常用于以下情况:
存储集合:需要一个能够存储多个元素的集合。
动态调整大小:需要一个可以根据需要自动调整大小的集合。
快速访问:需要通过索引快速访问集合中的元素。
在游戏开发中的用途
在游戏开发中,List
类非常有用,例如:
存储游戏对象:可以用来存储所有的敌人、玩家或物品。
管理游戏状态:可以用来存储游戏的不同状态或关卡。
事件处理:可以用来存储和管理事件处理函数。
语法规则及声明
要使用 List
,你需要先引入 System.Collections.Generic
命名空间。声明一个 List
非常简单,只需要指定元素的类型。例如:
using System.Collections.Generic;
List<int> numbers = new List<int>();
List<string> names = new List<string>();
List<MyClass> objects = new List<MyClass>();
常用方法
Add(T item)
:向列表中添加一个元素。Remove(T item)
:从列表中移除一个元素。Count
:获取列表中元素的数量。Clear()
:清空列表中的所有元素。Contains(T item)
:检查列表中是否包含某个元素。IndexOf(T item)
:获取某个元素的索引。Insert(int index, T item)
:在指定位置插入一个元素。RemoveAt(int index)
:移除指定索引处的元素。
示例代码及解释
示例1:基本操作
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<int> numbers = new List<int>();
// 添加元素
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
// 输出列表中的元素
foreach (int number in numbers)
{
Console.WriteLine(number);
}
// 获取元素数量
Console.WriteLine($"Count: {numbers.Count}");
// 检查是否包含某个元素
bool containsTwo = numbers.Contains(2);
Console.WriteLine($"Contains 2: {containsTwo}");
// 移除元素
numbers.Remove(2);
Console.WriteLine($"Count after removal: {numbers.Count}");
// 插入元素
numbers.Insert(1, 5);
Console.WriteLine($"Element at index 1: {numbers[1]}");
// 移除指定索引处的元素
numbers.RemoveAt(1);
Console.WriteLine($"Element at index 1 after removal: {numbers[1]}");
}
}
示例2:在游戏开发中的应用
using System;
using System.Collections.Generic;
public class Enemy
{
public string Name { get; set; }
public int Health { get; set; }
public Enemy(string name, int health)
{
Name = name;
Health = health;
}
public void TakeDamage(int damage)
{
Health -= damage;
Console.WriteLine($"{Name} took {damage} damage, remaining health: {Health}");
}
}
public class Game
{
private List<Enemy> enemies;
public Game()
{
enemies = new List<Enemy>();
}
public void AddEnemy(Enemy enemy)
{
enemies.Add(enemy);
}
public void UpdateEnemies()
{
foreach (var enemy in enemies)
{
enemy.TakeDamage(10);
}
}
}
public class Program
{
public static void Main()
{
Game game = new Game();
// 添加敌人
game.AddEnemy(new Enemy("Goblin", 100));
game.AddEnemy(new Enemy("Orc", 150));
// 更新敌人状态
game.UpdateEnemies();
}
}
优点和缺点
优点
动态大小:
List
可以根据需要自动调整大小。易用性:提供了丰富的方法,使操作变得简单。
快速访问:可以通过索引快速访问元素。
缺点
内存消耗:
List
在扩展时可能会消耗额外的内存。性能开销:频繁的插入和删除操作可能会影响性能。
基础题目和进阶题目
基础题目
创建一个
List<string>
,并添加一些名字。然后输出所有名字。创建一个
List<int>
,并实现从列表中删除所有偶数。创建一个
List<double>
,计算和输出列表中所有元素的平均值。
进阶题目
创建一个
List<Student>
,其中Student
类包含Name
和Grade
属性。实现一个方法,计算并输出所有学生的平均成绩。创建一个
List<Product>
,其中Product
类包含Name
和Price
属性。实现一个方法,按价格升序排序并输出所有产品的信息。创建一个
List<Employee>
,其中Employee
类包含Name
、Position
和Salary
属性。实现一个方法,输出所有薪水高于指定值的员工信息。