IDictionary 和 Dictionary 是 C# 中用于存储键值对的两个相关但不同的类型,它们之间的主要区别在于:一个是接口,另一个是具体类。
1. IDictionary 是接口,Dictionary 是实现类
IDictionary 是一个接口,定义了操作键值对的基本方法和属性,比如 Add、Remove、ContainsKey、this[T] 索引器等。它不包含具体实现,只规定“能做什么”。
Dictionary
简单来说:
IDictionary(或泛型版本 IDictionary2. 为什么应该优先使用接口?
在声明变量、参数或返回类型时,推荐优先使用 IDictionary
3. 实际代码示例
不推荐写法(依赖具体类):
public void ProcessUsers(Dictionary<string, User> users) { ... }
推荐写法(依赖接口):
public void ProcessUsers(IDictionary<string, User> users) { ... }
这样无论是 Dictionary、SortedDictionary,还是只读包装字典,都可以传入。
4. 注意泛型与非泛型接口
尽量使用泛型版本 IDictionary
Dictionary
开发中应优先选择泛型接口以获得更好的性能和类型检查。
基本上就这些。优先使用接口是一种良好的编程习惯,让代码更健壮、更易扩展。虽然 Dictionary 是最常用的实现,但对外暴露时,用 IDictionary 更合适。
