Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我自己的类(List<;int>;)不喜欢相交。为什么?_C#_Types_Intersect - Fatal编程技术网

C# 我自己的类(List<;int>;)不喜欢相交。为什么?

C# 我自己的类(List<;int>;)不喜欢相交。为什么?,c#,types,intersect,C#,Types,Intersect,我有一个从列表派生的类。 我无法在类的实例上使用intersect()。 为什么? 我得到的是: class myList : List<int> { ... } 这不管用。 编译器抱怨类似于 错误1类型“System.Collections.Generic.IEnumerable”无法隐式转换为“myList” 我不明白这里发生了什么类型的类型混淆:( 我已经在我的Intersect示例中尝试了一些强制转换,但没有成功 谁能解释一下这里的问题是什么,我做错了什么 谢谢!扩展方法不

我有一个从列表派生的类。 我无法在类的实例上使用intersect()。 为什么?

我得到的是:

class myList : List<int>
{ ... }
这不管用。 编译器抱怨类似于 错误1类型“System.Collections.Generic.IEnumerable”无法隐式转换为“myList”

我不明白这里发生了什么类型的类型混淆:( 我已经在我的Intersect示例中尝试了一些强制转换,但没有成功

谁能解释一下这里的问题是什么,我做错了什么

谢谢!

扩展方法不会尝试返回与输入类型相同的集合(例如
列表
)。它只会返回一个实现
IEnumerable
的序列,以获得适当的
t
。因此在您的情况下,您可以使用:

myList list1 = new some initialization...
myList list2 = new some initialization...

IEnumerable<int> list3 = list1.Intersect(list2);

(或者,如果您的类提供了一个接受
IEnumerable
参数的构造函数,那么这也会起作用。)

作为旁白,我强烈建议您遵循.NET命名约定-这样您的类将被称为
MyList
,而不是
MyList
,尽管这是一个糟糕的名称,因为它根本无法描述其用途。您确定首先需要扩展
列表吗?与u唱歌作曲。非常感谢你这个非常酷的答案。1.现在一切正常。2.我现在完全理解了我的问题!非常感谢!
myList list1 = new some initialization...
myList list2 = new some initialization...

IEnumerable<int> list3 = list1.Intersect(list2);
myList list4 = new myList();
list4.AddRange(list3);