2014-09-29 48 views
0

我有兩個對象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

回答

2

嘗試在每個項目上挑起投:

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

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

雖然我不確定它會如何影響性能,但與Cast'>()方法相比,這是可行的。 – PedroC88 2014-09-29 20:17:24