检查对象放入列表时是否已转换

本文关键字:是否 转换 列表 对象 检查 | 更新日期: 2023-09-27 18:36:18

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

顺便说一句:Presector是Sector的一个子类。

我到处找了看,什么也找不到。 as 关键字对我不起作用,Type.IsAssignableFrom 也不起作用。 编辑:是也不起作用,因为这只会检查对象是否该类型。

示例代码时间!

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

现在,我们有一个包含两个部门的列表。 第二个是铸造的。 如何使用代码找出答案?

检查对象放入列表时是否已转换

if (objectFromList is Presector)
    // Code here..
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);

"is"关键字有什么问题?