![]() |
1
5
我假设你没有使用C#4.0。 在C#的早期版本中,这不起作用,因为该语言不支持 反方差 和 协方差 属于泛型类型。 不用担心学术术语-它们只是允许的变化类型(即变化)的术语。 下面是一篇关于细节的好文章: http://blogs.msdn.com/b/csharpfaq/archive/2010/02/16/covariance-and-contravariance-faq.aspx 要使代码工作,请编写以下代码:
|
![]() |
2
2
如果您使用的是C#4(.NET 4),只需删除最后一行中的演员:
如果使用的是C#3(.NET 3.5),则需要使用Cast()LINQ扩展名:
无法将list2强制转换为List的原因是该List不是协变的。你可以在这里找到一个很好的解释为什么不是这样: In C#, why can't a List<string> object be stored in a List<object> variable 第一行工作的原因是AddRange()接受IEnumerable,而IEnumerable是协变的。.NET3.5不实现泛型集合的协方差,因此需要在C#3中使用Cast()。 |
![]() |
3
0
如果可以的话,可以尝试使用LINQ,同时显式转换为
|
![]() |
4
0
你不能这么做,因为MyType2是MyType,但是
通过使用LINQ的Cast方法,您可以轻松地完成复制,该方法将每个元素强制转换为所需的类型。
|
![]() |
algo · 在C语言中,将两个指针数组合并成第三个指针数组++ 2 年前 |
![]() |
Davi A. Sampaio · 合并对特定键具有相同值的dict 2 年前 |
![]() |
hncl · JS使用map合并两个子数组 2 年前 |
![]() |
userj · 如何合并两个基于数字的列标题不断增加的数据帧? 2 年前 |
![]() |
Nihilum · 在Python上合并数组而不求其重叠单元格的和 2 年前 |