根据SortedList的文件
和SortedDictionary
他们都实施了
IReadOnlyCollection<KeyValuePair<TKey,TValue>>
和IReadOnlyDictionary<TKey,TValue>
。 .net 4.5.2的doc版本说的是相同的,因此我的项目应该涵盖C#6.0(维基百科所说的.NET 4.6)。
根据VS 2015的编译器,他们没有。
我无法将SortedDictionary<int, string>
传递给此函数:
private static void funcIROCollKvp1 (IReadOnlyCollection<KeyValuePair<int, string>> i_rocollkvp)
哪一个错了?
这是完整的代码:
private static void funcIROCollKvp1 (IReadOnlyCollection<KeyValuePair<int, string>> i_rocollkvp)
{
}
private static void Main ()
{
SortedList<int, string> listkvp = new SortedList<int, string> ();
SortedDictionary<int, string> dict = new SortedDictionary<int, string> ();
funcIROCollKvp1 (listkvp);
funcIROCollKvp1 (dict);
}
1&gt; D:\ Visual Studio Projects \ testTKS_vs2015 \ test03 \ Program.cs(18,24,18,31):错误CS1503:参数1:无法从'System.Collections.Generic.SortedList'转换为'System .Collections.Generic.IReadOnlyCollection&GT;'
1&gt; D:\ Visual Studio Projects \ testTKS_vs2015 \ test03 \ Program.cs(19,24,19,28):错误CS1503:参数1:无法从'System.Collections.Generic.SortedDictionary'转换为'System.Collections。 Generic.IReadOnlyCollection&GT;'
答案 0 :(得分:1)
它并没有说你无法通过它,它只是说它不知道如何通过它们。您可以手动将对象强制转换为IReadOnlyCollection。
funcIROCollKvp1((IReadOnlyCollection < KeyValuePair<int, string> > )listkvp);
funcIROCollKvp1((IReadOnlyCollection < KeyValuePair<int, string> > )dict);