首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IDictionary接口的用途

IDictionary接口的用途
EN

Stack Overflow用户
提问于 2009-05-22 06:36:53
回答 5查看 2.9K关注 0票数 4

IDictionary接口的需求是什么?如何初始化IDictionary接口。毕竟,它只是一个接口。下面的代码片段来自msdn。我无法理解它。

代码语言:javascript
运行
复制
IDictionary<string, string> openWith = new Dictionary<string, string>();
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-05-22 06:42:08

它定义了字典应该实现的重要functions

MSDN中的这一行表示您正在创建一个对象openWith,它实现了在IDictionary接口中定义的函数(方法)。

在使用Dictionary声明变量时,如下所示:

代码语言:javascript
运行
复制
Dictionary<string,string> openWith=.....;

您正在与具体类型的对象绑定。但是当你使用

代码语言:javascript
运行
复制
IDictionary<string,string> openWith=....;

您可以将它与实现IDictionary接口的任何对象一起使用,可能是您自己的自定义类:)

票数 11
EN

Stack Overflow用户

发布于 2009-05-22 06:44:12

接口的全部意义在于提供...任何模块的接口(我在这里使用的是广义的“模块”),这样调用代码就不必担心这个特定接口是如何实现的。

至于“如何初始化IDictionary接口”,这在技术上是不正确的。可以初始化的是一个变量,其类型为IDictionary<T, V>。当然,必须初始化变量,但这通常对“客户端代码”是隐藏的。

然而,IDictionary并不是很有代表性。相反,考虑一个IDataReader接口。您肯定已经处理过ADO.NET,所以这看起来应该很眼熟:

代码语言:javascript
运行
复制
public Foo PopulateFromDataReader(SqlDataReader dataReader)

此特定方法与SqlDataReader紧密耦合,因此您必须重写它才能支持Access、Oracle、MySQL或Firebird等。换句话说,你依赖于实现。

现在考虑一下:

代码语言:javascript
运行
复制
public Foo PopulateFromDataReader(IDataReader dataReader)

此方法可以与实现IDataReader的任何类一起使用,这意味着基本上可以与任何与ADO. data兼容的数据提供程序一起使用。

票数 9
EN

Stack Overflow用户

发布于 2009-05-22 06:46:32

它与任何其他接口没有什么不同。试着想一个更简单的例子:

代码语言:javascript
运行
复制
interface IThermometer
{
    double CurrentTemperature { get; }
}

现在我们有了一种获得温度的方法,尽管我们并不关心它是如何测量的。我们可以创建各种实现:

代码语言:javascript
运行
复制
class MercuryThermometer : IThermometer
{
    public double CurrentTemperature
    {
        get { return ... /* gets the temperature somehow */ }
    }
}

程序的其余部分不需要知道它使用的是哪个温度计。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/896611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档