簡単な質問があります。
クラスSubA、SubB、SubCなど、いくつかのクラスがあります。抽象クラスもあります。親としましょう
したがって、SubA、SubB、および SubC のインスタンスを含む Parent オブジェクトの配列があります。
基本的に、配列または親をループして、SubA の特定のインスタンスを取得しようとしています。
次のことを試しましたが、型例外が発生します。
foreach (SubA a in Parent.GetList())
どんな助けでも大歓迎です。
はい、その現在のコードには暗黙的なキャストがあり、コレクションに「間違った」タイプのオブジェクトがあると失敗します。LINQ のOfType方法を使用することをお勧めします。
using System.Linq; // Make LINQ extension methods available
...
foreach (SubA a in Parent.GetList().OfType<SubA>())
{
...
}
a上記では決してnullにならないことに注意してください-それで問題ないと思います。
ここにOfType<T>文書化された使用。
foreach(SubA a in Parent.GetList().OfType<SubA>())