我自己的类(List <int>)不喜欢交叉.为什么?

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示例中尝试了一些演员,但它没有用.

任何人都可以解释一下这里的问题是什么,我做错了什么?

谢谢!

Jon*_*eet 8

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>参数的构造函数,那也可以.)