c#里面声明一个Dictionary和IDictionary的区别:
Dictionary 这个是实体类,copy也就是说在这个类当中所有人的方法和属性都是已经实现了的。
IDictionary只是接供一个接口,你可以重写这个接口,来实现你自己的使用方式。接口在意义上是没什么用,但是在问对外的的项目上别人可以用这个的接口来实现对方的的使用方式,也可以在这个的类中继承用户的接口来实现。
Dictionary<string> s = new Dictionary<string>();这个是实例化一个类型为"string"的泛型类对象Dictionary。
IDictionary<string> s = new Dictionary<string>();这个是实例化一个类型为"string"的泛型接口对象IDictionary
扩展资料:
c#里面,Dictionary的用法:
假如现在要导入一批数据,这些数据中有一个称为公司的字段是数据库里已经存在了的,目前需要把每个公司名字转为ID后才存入数据库。
每导入一笔记录的时候,就把要把公司的名字转为公司的ID,这个不应该每次都查询一下数据库的,因为这太耗数据库的性能了。
解决方案:在业务层里先把所有的公司名称及相应的公司ID一次性读取出来,然后存放到一个Key和Value的键值对里,然后实现只要把一个公司的名字传进去,就可以得到此公司相应的公司ID,就像查字典一样。可以使用字典Dictionary操作这些数据。
而IDictionary只是接供一个接口,你可以重写这个接口,来实现你自己的使用方式。
接口在意义上是没什么用,但是在对外的的项目上别人可以用你的接口来实现他自己的使用方式,也可以在他的类中继承你的接口来实现。
比如:
class Test
{
public string GetTest()
{
return "aaa";
}
}
public interface ITest
{
string GetTest();
}
class ATest:ITest
{
public string GetTest()
{
return "ccc";
}
}
Dictionary是类(可以实例化),而IDictionary是接口(不能实例化),
Dictionary类实现了IDictionary接口而已
至于声明,当然也有区别,比如Dictionary类还实现了ISerializable、IDeserializationCallback接口
如果你要用到这2个接口的方法,就不能声明为IDictionary
IDictionary接口是所有字典类集合的基本接口,该接口与ICollection,IEnumerable接口是所有非泛型类集合的最基本的接口
IEnumerable接口用于公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。实现了该接口的集合可以用foreach语句迭代其中的元素
ICollection接口定义所有非泛型集合的大小、枚举数和同步方法。
IDictionary接口表示键/值对的非通用集合,是所有字典类集合的基接口