C#:sortedList <tkey,tvalue>实现IReadOnlyDictionary <tkey,tvalue>?

时间:2018-05-11 22:09:06

标签: c# dictionary interface sortedlist

根据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;'

1 个答案:

答案 0 :(得分:1)

它并没有说你无法通过它,它只是说它不知道如何通过它们。您可以手动将对象强制转换为IReadOnlyCollection。

        funcIROCollKvp1((IReadOnlyCollection < KeyValuePair<int, string> > )listkvp);
        funcIROCollKvp1((IReadOnlyCollection < KeyValuePair<int, string> > )dict);