C# 如何从Program类访问其他类的List集合并遍历打印内容
解决方案
1. 调整TodoCollection类,开放待办列表访问权限
你当前定义的_CurrentTasks是类私有字段,外部类无法直接访问,需要在TodoCollection类中新增一个公开的只读属性来暴露待办任务集合,避免外部随意修改内部数据:
using System.Collections.Generic; using System.Collections.ObjectModel; // 需引入此命名空间使用只读集合 namespace ToDo { public class TodoCollection { // 声明字段 List<Task> _CurrentTasks = new List<Task>(); List<Task> _ArchivedTasks = new List<Task>(); // 新增只读属性,对外暴露当前待办列表 public IReadOnlyList<Task> CurrentTasks => _CurrentTasks.AsReadOnly(); // 用户添加任务到列表的方法 public void Add(Task NewTask) { _CurrentTasks.Add(NewTask); } } }
如果不需要严格控制外部修改,也可以简化为直接返回列表的公开属性:public List<Task> CurrentTasks => _CurrentTasks;
2. 补全Program类中的foreach打印逻辑
直接访问collection实例的CurrentTasks属性即可:
case 2: foreach(Task newTask in collection.CurrentTasks) { Console.WriteLine(newTask.ShowTask()); } break;
可选优化:显示任务完成状态
可以修改Task类的ShowTask方法,直观区分已完成/未完成任务:
public string ShowTask() { return $"{(isDone ? "[√] 已完成" : "[ ] 待完成")}:{this._Name}"; }
内容的提问来源于stack exchange,提问作者Marcus Rosberg
相关产品推荐
相关产品推荐

