两维数组不是IEnumerable?

4 .net c# collections

我有函数,它必须接受两种类型的数据 - MyClass的Observable集合和myclass的二维数组.结构无关紧要,因为我在这些集合上使用linq查询.喜欢 - 给我收集所有项目,其中Myclass.Value == 3.

所以我创建了函数,它接受类型的参数IEnumerable<MyClass>,因为二维数组和可观察集合都实现IEnumerable,它应该工作.

但是,当我尝试将MyClass [,]类型的参数传递给我的函数时,发生编译时错误 - 参数类型Myclass [,]不能赋值给参数类型IEnumerable<MyClass>.

怎么了?谢谢.

Jon*_*eet 9

矩形数组确实实现IEnumerable,但它们没有实现IEnumerable<T>(对于任何实现T,包括明显的元素类型).您可以通过以下呼叫轻松解决此问题Cast:

SomeMethod(array.Cast<MyClass>());
Run Code Online (Sandbox Code Playgroud)