我有一个 Buildable 抽象类,它继承了 House 和 Road 类。
我正在尝试对包含房屋和道路的可建造对象数组进行分类。
我知道我可以检查一个对象是否是这样的 Road:f(myBuildables[i] is Road)
并且它工作得很好,但出于可伸缩性的原因,我想要一个包含从 Buildable 继承的类的数组。我尝试了一些东西,但显然它不起作用:class[] inheritTypes = { House, Road }
我也尝试了一组类型,Types[] buildableTypes = { typeOf(Hosue), typeOf(Road) }
但我无法比较类型,因为typeOf(myBuildables[i])
总是返回 Buildable 类型。
is
检查实例但检查类型的等效功能是Type.IsAssignableFrom
( docs )。
在你的情况下:
if (typeof(House).IsAssignableFrom(obj.GetType()))
{
//obj is a house
}
因此,您可以将类型保存在数组中,然后根据该数组的内容动态地做出决定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句