CSh*_*per 0 c# types intersect
我有一个派生自List的类.我无法在我的类的实例上使用intersect().为什么?
我有的是:
class myList : List<int>
{ ... }
Run Code Online (Sandbox Code Playgroud)
我尝试做的是
myList list1 = new some initialization...
myList list2 = new some initialization...
myList list3 = list1.Intersect(list2);
Run Code Online (Sandbox Code Playgroud)
这不起作用.编译器抱怨类似"Error 1 Typ"System.Collections.Generic.IEnumerable"无法隐式转换为"myList"."
我不明白这里有什么类型的混淆:(我已经在我的Intersect示例中尝试了一些演员,但它没有用.
任何人都可以解释一下这里的问题是什么,我做错了什么?
谢谢!
该Intersect
扩展方法没有尝试返回同一种类的输入的集合(如List<int>
).它只返回一个IEnumerable<T>
适当的序列T
.所以在你的情况下你可以使用:
myList list1 = new some initialization...
myList list2 = new some initialization...
IEnumerable<int> list3 = list1.Intersect(list2);
Run Code Online (Sandbox Code Playgroud)
如果您想创建myList
包含该内容的内容,则需要执行以下操作:
myList list4 = new myList();
list4.AddRange(list3);
Run Code Online (Sandbox Code Playgroud)
(或者如果你的类提供了一个接受IEnumerable<int>
参数的构造函数,那也可以.)