QA@IT

C#で中身がObject型のListジェネリックをcastできない。

12958 PV

現在、C#で開発をしているのですが、中身がobject型のListジェネリック・クラスを、独自のクラスにcastしようとした時に、コンパイルエラーが発生してしまいます。

具体的にソースコードで説明させていただきます。

public List<Object> findObjects(){
    return null;
}

public main(){
    (List<MyClass>)findObjects();//ここでコンパイルエラー
}

上記のコードでコンパイルすると、Cannot convert type `System.Collections.Generic.List<object>' to `System.Collections.Generic.List<MyClass>'というエラーがでます。

この問題をどうすれば解決できるでしょうか?ご回答いただけると助かります。

回答

findObject の方を IEnumerable にして、使う方はキャストじゃなくて、findObjects().OfType().ToList() とかにしてください。

using System.Collections.Generic;
using System.Linq;
を付けて。

編集 履歴 (0)
  • findObjects().OfType<MyClass>().ToList();という感じで解決できました。ありがとうございました。 -
ウォッチ

この質問への回答やコメントをメールでお知らせします。