问题描述
我试图声明一个字典有一个字符串作为键,一个对象是一个值。我在接口的帮助下声明了它。这是我的代码
Hi,
I tried to declare a dictionary have a string as the key and an object a the value. I declared it with the help of the interfaces. This is my code
ICollection<KeyValuePair<string, ICollection<DemoProperty>>> Test = new Dictionary<string, List<DemoProperty>>();
它得到了转换错误。
但是当我声明如下时没有错误
Its getting the coversion Error.
But there is no Error when I declare as below
ICollection<KeyValuePair<string, ICollection<DemoProperty>>> Test = new List<KeyValuePair<string, ICollection<DemoProperty>>>();
我知道这可以声明如下
and I know this can declare as below also
Dictionary<string, ICollection<DemoProperty>> Test = new Dictionary<string, ICollection<DemoProperty>>
第一个陈述的确切错误是什么,如何进行第一次陈述。希望大家都能理解我的问题。
What is the exact error on the first statement and how can I proceed with the first statatement. Hope you all understand my questions.
推荐答案
ICollection<keyvaluepair><string,>>> Test = new Dictionary<string,>>();
Test.Add(new KeyValuePair<string,>>("a",new List<demoproperty>()));
</demoproperty></keyvaluepair>
如果可以,那么您将无法添加任何 ICollection
,只有列表< demoproperty>
这不是你的声明所说的
您可以将 ICollection< x>
实例化为词典< x>
,因为词典< tkey,tvalue> ;继承ICollection< tkey,tvalue>但是如果你改变泛型类型,那么它们将不匹配。
If you could then you would not be able to add any ICollection
, only List<demoproperty>
which is not what your declaration states
You can instantiate an ICollection<x>
as a Dictionary<x>
because Dictionary<tkey,tvalue>; inherits ICollection<tkey,tvalue> but if you change the generic types then they won't match.
ICollection<KeyValuePair<string, ICollection<DemoProperty>>> Test = new Dictionary<string, ICollection<DemoProperty>>();
这篇关于带接口的字典声明错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!