铸造对象的名单到另一个隐式转换

问题描述:

我有两个对象myObject1myObject2,在myObject1我有以下方法:铸造对象的名单到另一个隐式转换

public static implicit operator myObject2(myObject1 param) 
{ //Some Code } 

如何我投的IEnumerable<myObject1>IEnumerable<myObject2>

+0

他们有相同的属性? – 2014-09-29 17:52:53

+0

转换的执行已完成,但是编写类似'IEnumerable params2 = params1'的代码不能编译,因为params1是'IEnumerable ' – PedroC88 2014-09-29 17:54:51

+0

是什么让你认为它会编译?你从'myObject1'转换为'myObject2'而不是'IEnumerable '转换为'IEnumerable ' – 2014-09-29 17:57:45

尝试在每个项目上挑起投:

IEnumerable<myObject1> original; 
// ... 
IEnumerable<myObject2> converted = original.Cast<myObject2>(); 
+0

我试过了,编译器试图转换整个IEnumerable而不是内部对象,所以它不能编译。 – PedroC88 2014-09-29 17:56:07

+0

它编译和为我工作。将创建一个新的'IEnumerable ';您不能分配到相同的集合,因为它是不同的类型。 – Jacob 2014-09-29 17:57:20

+0

哦yess ... noobie错误,我宣布指定的类型为列表哪一个当然不能接受IEnumerable。它的工作,谢谢。 – PedroC88 2014-09-29 17:59:07

var converted = original.Select(o=>(myObject2)o); 
+0

虽然我不确定它会如何影响性能,但与Cast'>()方法相比,这是可行的。 – PedroC88 2014-09-29 20:17:24