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

C#开发待办应用时如何修改列表中Task状态并标记为已完成?

具体实现方案

你需要修改3处代码即可实现需求:

1. 补充Task类的完成状态对外访问能力

当前isDone为私有字段,外部无法读取任务是否完成的状态,修改Task类代码:

namespace ToDo
{
    public class Task
    {
        string _Name;
        // 改为公开只读属性,外部只能读取不能直接修改,只能通过Done方法修改状态
        public bool IsDone { get; private set; } = false;
        public Task(string name, bool done)
        {
            this._Name = name;
            this.IsDone = done;
        }

        public string ShowTask()
        {
            return this._Name;
        }
        public bool Done()
        {
            IsDone = true;
            return IsDone;
        }
    }
}

2. 修正序号索引适配问题

你打印任务时序号是从1开始计数,但C#的List默认是0索引,现有GetTask方法会取错任务甚至触发索引越界,修改TodoCollection类的GetTask方法:

public Task GetTask(int userInput)
{
    // 用户输入的是1开头的序号,减1转为0开头的列表索引
    return _CurrentTasks[userInput - 1];
}

3. 修改遍历打印逻辑,动态显示方括号内容

修改Program类中遍历打印任务的代码,根据任务的IsDone状态判断显示X还是空白:

foreach (Task newTask in collection)
{
    counter++;
    // 三元表达式判断状态:已完成显示X,未完成显示空白
    Console.WriteLine($"({counter}) [{(newTask.IsDone ? "X" : " ")}] {newTask.ShowTask()}");
}

可选优化

可以在标记完成后添加一行提示,提升用户体验:

selectedTask.Done();
Console.WriteLine("任务已标记为完成,按回车键返回菜单");
Console.ReadLine();
Console.Clear();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:36:03