IDictionary <string,string =“”>与Dictionary <string,string =“”> </string,> </string,>

时间:2008-11-30 12:59:47

标签: c# generics collections

在这里使用IDictionary有什么价值?

3 个答案:

答案 0 :(得分:27)

使用接口的值始终相同:切换到另一个后端实现时,您不必更改客户端代码。

考虑以后对代码进行概要分析表明哈希表实现(在Dictionary类中使用)不适合您的任务,并且二进制搜索树的性能会更好。如果您已编码为接口,那么切换实现很简单。但是,如果你使用了一个具体的类,你必须在更多的地方更改更多的代码。 =&GT;这需要时间和金钱。

答案 1 :(得分:15)

IDictionary可以实现更松散的耦合。

假设您有这样的方法:

void DoSomething(IDictionary<string, string> d)
{
   //...
}

你可以像这样使用它:

Dictionary<string, string> a = new Dictionary<string, string>();
SortedDictionary<string, string> b = new SortedDictionary<string, string>();
DoSomething(a);
DoSomething(b);

答案 2 :(得分:1)

根据您之前的问题Class inherits generic dictionary<string, IFoo> and Interface以及答案中的讨论,我猜你要求更多关于继承而不是使用。

如果你对词典的实现方式感到满意,那么从词典实现是很好的。如果你想改变一些东西,那么实现IDictionary会更好。

恕我直言,如果您打算使用'new'覆盖现有成员,那么最好实现界面而不是继承原始类。