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
相关产品推荐
相关产品推荐

