如何向SortedList中嵌套的List泛型集合添加对象
操作实现方法
核心逻辑
添加操作需要先校验目标分类Key是否存在,不存在则先初始化对应Key的List实例,再执行元素添加,避免空引用或键不存在异常。
完整代码示例
// 先校验顶层SortedList是否已实例化 categories ??= new SortedList<string, List<ToolCommandDiscoveryHelper.DiscoveredTool>>(); // 定义目标分类Key和待添加的对象 string categoryKey = "自定义分类名"; ToolCommandDiscoveryHelper.DiscoveredTool toolToAdd = new ToolCommandDiscoveryHelper.DiscoveredTool { // 赋值对象属性,替换为实际业务逻辑 }; // 校验Key是否存在 if (!categories.ContainsKey(categoryKey)) { categories[categoryKey] = new List<ToolCommandDiscoveryHelper.DiscoveredTool>(); } // 完成元素添加 categories[categoryKey].Add(toolToAdd);
简化写法(C# 6.0+ 支持)
用TryGetValue减少字典查询次数,性能更优:
categories ??= new SortedList<string, List<ToolCommandDiscoveryHelper.DiscoveredTool>>(); string categoryKey = "自定义分类名"; ToolCommandDiscoveryHelper.DiscoveredTool toolToAdd = new(); if (!categories.TryGetValue(categoryKey, out var toolList)) { toolList = new List<ToolCommandDiscoveryHelper.DiscoveredTool>(); categories[categoryKey] = toolList; } toolList.Add(toolToAdd);
注意事项
- 需确保
ToolCommandDiscoveryHelper.DiscoveredTool的访问权限符合当前上下文要求 - SortedList的Key默认区分大小写,如有忽略大小写需求可在实例化时传入
StringComparer.OrdinalIgnoreCase参数:categories = new SortedList<string, List<ToolCommandDiscoveryHelper.DiscoveredTool>>(StringComparer.OrdinalIgnoreCase);
内容的提问来源于stack exchange,提问作者Timmie Nilsson
相关产品推荐
相关产品推荐

