读取两列文件填充Dropdown,用对象List还是Dictionary更优?
方案选择建议
结合你给出的「仅遍历集合、Dropdown只展示Name字段」的需求,两个方案的优劣分析如下:
性能层面
- 如果你完全没有通过ID查询Name的需求,方案2的字典存储是最不划算的:字典为了实现O(1)查询引入了哈希表开销,内存占用高于普通List,遍历效率也更低,额外开销完全浪费。
- 方案1创建自定义对象的性能损耗完全可以忽略:除非你的文件行数达到十万甚至百万级别,普通业务场景下几千、几万条数据的对象创建耗时,用户完全感知不到,根本不值得为了这点微乎其微的性能牺牲代码的可读性和扩展性。注意你给出的方案1代码有笔误,
new Object无法直接声明Id和Name属性,需要换成自定义强类型类或者匿名类:
// 优先定义强类型实体类,可读性可维护性最高 public class DropdownOption { public int Id { get; set; } public string Name { get; set; } } // 循环内写法 list.Add(new DropdownOption { Id = int.Parse(values[0]), Name = values[1] });
可读性与可维护性层面
方案1的强类型实体存储可读性远高于方案2的字典:其他开发者看代码一眼就能知道你存储的是ID+Name的下拉选项业务实体,后续如果新增需求(比如选中下拉项后要提交对应ID、要扩展加其他字段),直接改实体类就行,改造成本极低。
方案2的字典存储只有在你有高频通过ID查Name的需求时才有优势,否则其他开发者拿到字典还要额外理解「键是ID、值是Name」的约定,代码可读性差,后续扩展也不方便。
极端场景的最优选择
如果你100%确定后续永远不会用到ID,只需要Name做展示,那最优方案是直接存List<string>,只保留Name字段即可,性能最高也完全满足需求。
内容的提问来源于stack exchange,提问作者randomuser
相关产品推荐
相关产品推荐

