我最近遇到了一個問題,使用它的用戶定義的強制轉換(cast operator overload)與linq的Cast方法一起使用。爲什麼我不能使用linq的Cast與用戶定義的強制轉換,但是我可以在Select調用中使用它?
我在SO發現了一個關於我的問題的similar question,我還發現了一個解釋得很好的link。我的問題解決了。
但有些事讓我疑惑:
爲什麼這不起作用:
foolist.Cast<bar>(); // throws InvalidCastException
,而這個工程:
foolist.Select(f => (bar)f).ToList(); // works fine
我認爲,這是關係到每一個執行的東西方法。如果是這樣,Cast方法不能有類似於Select的實現,允許它與用戶定義的強制轉換一起使用(因爲這是有點期待的)。
注:我不是問爲什麼失敗。我在問爲什麼Cast方法是以失敗的方式編寫的。
這與您所鏈接的問題完全相同 - 您的問題與您列出的問題相比有何新變化? – 2013-03-04 21:00:51
@ReedCopsey我明白爲什麼Cast方法失敗。我不明白爲什麼這樣實施(因爲我可以輕鬆解決它)。 – talles 2013-03-04 21:09:42
主持人是否可以查看我添加的註釋並檢查*是否重複。鏈接的問題(我在我的問題中也將自己聯繫在一起)解釋了爲什麼**,但它沒有解釋**爲什麼它是這樣的**。 – talles 2013-03-04 21:20:31