OneBigLoser
OneBigLoser
发布于 2024-07-19 / 34 阅读
0
0

List 学习

基本概念

List 是 C# 中的一个通用集合类,它位于 System.Collections.Generic 命名空间下。List 类允许你存储同一类型的对象,并提供了动态调整大小的功能。它类似于数组,但比数组更灵活,因为它可以根据需要自动扩展和缩小。

用途

List 类可以用来存储和管理一组数据,常用于以下情况:

  1. 存储集合:需要一个能够存储多个元素的集合。

  2. 动态调整大小:需要一个可以根据需要自动调整大小的集合。

  3. 快速访问:需要通过索引快速访问集合中的元素。

在游戏开发中的用途

在游戏开发中,List 类非常有用,例如:

  1. 存储游戏对象:可以用来存储所有的敌人、玩家或物品。

  2. 管理游戏状态:可以用来存储游戏的不同状态或关卡。

  3. 事件处理:可以用来存储和管理事件处理函数。

语法规则及声明

要使用 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();
    }
}

优点和缺点

优点

  1. 动态大小List 可以根据需要自动调整大小。

  2. 易用性:提供了丰富的方法,使操作变得简单。

  3. 快速访问:可以通过索引快速访问元素。

缺点

  1. 内存消耗List 在扩展时可能会消耗额外的内存。

  2. 性能开销:频繁的插入和删除操作可能会影响性能。

基础题目和进阶题目

基础题目

  1. 创建一个 List<string>,并添加一些名字。然后输出所有名字。

  2. 创建一个 List<int>,并实现从列表中删除所有偶数。

  3. 创建一个 List<double>,计算和输出列表中所有元素的平均值。

进阶题目

  1. 创建一个 List<Student>,其中 Student 类包含 NameGrade 属性。实现一个方法,计算并输出所有学生的平均成绩。

  2. 创建一个 List<Product>,其中 Product 类包含 NamePrice 属性。实现一个方法,按价格升序排序并输出所有产品的信息。

  3. 创建一个 List<Employee>,其中 Employee 类包含 NamePositionSalary 属性。实现一个方法,输出所有薪水高于指定值的员工信息。


评论