c# - 将对象放入列表时检查对象是否已转换?

时间:2016-02-25 22:02:34

标签: c# list inheritance

我正在制作一个游戏,其中生成了正方形(扇区)以制作球的路径。有两种类型的部门:部门和预选部门。它们都被放入Sector类型列表中。我如何检查该列表中的特定扇区在放入之前是否实际上是一个Presector?

BTW:Presector是Sector的子类。

我到处寻找,无法找到任何东西。 as 关键字对我不起作用, Type.IsAssignableFrom 也不是。编辑: 也不会工作,因为那只是检查对象是否是那种类型。

示例代码时间!

List<Sector> sectors = new List<Sector>();
sectors.Add(new Sector());
sectors.Add(new Presector());

现在,我们有一个包含两个扇区的列表。第二个是铸造的。如何使用代码找到它?

2 个答案:

答案 0 :(得分:3)

if (objectFromList is Presector)
    // Code here..

答案 1 :(得分:1)

List<Sector> sectors = new List<Sector>();

sectors.Add(new Sector());
sectors.Add(new Presector());
sectors.Add(new Sector());

Presector ps = new Presector();
sectors.Add(ps);

// this returns an array with one element
var x = sectors.OfType<Presector>().ToArray();

// this returns true (the second element IS a Presector)
var hasPresector = sectors.Any(s => s is Presector);

// this returns true (the presector is present in the list)
var containsPs = sectors.Contains(ps);

&#39;&#39;的问题是什么?关键字?