たとえば、私は基底クラスEntity
を持っていて、次にこれから派生した2つのサブクラスLightEntity
とPlayerEntity
を持っています。同じ基本クラスを持ち、特定のクラスを抽出するオブジェクトのリストをループしますか?
List<Entity> Entities
これは、LightEntity
sとPlayerEntity
sを保持しています。
LightEntity
をすべてEntities
から取得します。
私が試した:
List<LightEntity> lights = new List<LightEntity>();
foreach (Entity ent in Entities)
{
if(ent is LightEntity)
{
lights.Add(ent);
}
}
をしかし、コンパイラはまだそれがLightEntity
のリストにちょうどEntity
を追加しようとするかもしれないと考えているようだとして、それはこれを好きではありません。
私はLightEntity
へent
をキャストしようとしたが、コンパイラが、それはLightEntity
にEntity
を変換するメソッドを持たないと言います。
を表示してみましょう。 C#では、ダウンキャストは暗黙的に許可されていません。これは明示的なキャストを先に進めなければならないことを意味します。このキャストはCLRに、私の場合、ダウンキャストを行うことが安全であることを伝えます。 – Nair