You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何修改List<bool>内的布尔值?新手技术求助

解决List元素修改问题及初始化说明

首先,你当前的List初始化存在一个容易混淆的点:new List<bool>(5) { true } 中的5是设置列表的初始容量,并非直接创建5个元素。实际这个列表目前仅包含1个true元素,剩余位置会在添加元素时自动扩容。如果需要初始化5个固定元素(比如第一个为已完成状态,其余为未完成),可以直接显式声明:

public static List<bool> nights = new List<bool> { true, false, false, false, false };

或者通过循环批量初始化:

public static List<bool> nights = new List<bool>(5);
static Nights()
{
    nights.Add(true);
    for (int i = 1; i < 5; i++)
    {
        nights.Add(false);
    }
}

修改List元素的方法

修改List中的布尔值和操作数组逻辑完全一致,直接通过索引赋值即可,静态类的写法本身不会阻碍修改操作:

// 将第2个关卡(索引从0开始,索引1对应第二个元素)标记为已完成
Nights.nights[1] = true;

// 读取第3个关卡的完成状态
bool isThirdNightDone = Nights.nights[2];

如果需要动态新增关卡进度,使用Add方法即可:

// 添加第6个关卡,初始状态设为未完成
Nights.nights.Add(false);

存档系统的补充建议

仅用静态List存储进度的话,游戏重启后数据会丢失。你需要将列表序列化后保存到本地文件,比如用Json格式实现持久化:

// 保存存档
string saveData = System.Text.Json.JsonSerializer.Serialize(Nights.nights);
System.IO.File.WriteAllText("game_save.json", saveData);

// 加载存档
if (System.IO.File.Exists("game_save.json"))
{
    string saveData = System.IO.File.ReadAllText("game_save.json");
    Nights.nights = System.Text.Json.JsonSerializer.Deserialize<List<bool>>(saveData);
}

使用这段代码需要引用System.Text.Json命名空间。

内容的提问来源于stack exchange,提问作者yozza524

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:19:55