C# IDictionary<;字符串,字符串>;对字典<;字符串,字符串>;
在这里使用IDictionary的价值是什么?使用接口的价值总是一样的:切换到其他后端实现时,不必更改客户端代码C# IDictionary<;字符串,字符串>;对字典<;字符串,字符串>;,c#,generics,collections,C#,Generics,Collections,在这里使用IDictionary的价值是什么?使用接口的价值总是一样的:切换到其他后端实现时,不必更改客户端代码 考虑一下,稍后对代码进行分析会发现哈希表实现(在字典中使用)不适合您的任务,而二进制搜索树的性能会更好。如果您已经编码到一个接口,那么切换实现是很简单的。然而,如果您使用了一个具体的类,那么您必须在更多的地方更改更多的代码。=>这需要时间和金钱。IDictionary支持更松散的耦合 假设您有这样一种方法: void DoSomething(IDictionary<string
考虑一下,稍后对代码进行分析会发现哈希表实现(在
字典中使用)不适合您的任务,而二进制搜索树的性能会更好。如果您已经编码到一个接口,那么切换实现是很简单的。然而,如果您使用了一个具体的类,那么您必须在更多的地方更改更多的代码。=>这需要时间和金钱。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);
void DoSomething(索引d)
{
//...
}
您可以这样使用它:
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);
字典a=新字典();
SortedDictionary b=新的SortedDictionary();
剂量测定法(a);
剂量测定法(b);
根据您前面的问题和答案中的讨论,我猜您会问更多关于继承而不是使用的问题
如果您对字典的实现方式感到满意,那么从字典实现就可以了。如果您想更改某些内容,那么实现IDictionary会更好
IMHO如果要用“new”覆盖现有成员,那么最好实现接口,而不是从原始类继承