【发布时间】:2020-03-27 14:50:00
【问题描述】:
我有一个 Buildable 抽象类,它继承了 House 和 Road 类。
我正在尝试对包含房屋和道路的可构建对象数组进行分类。
我知道我可以检查一个对象是否是这样的 Road:f(myBuildables[i] is Road) 并且它工作得很好,但是出于可伸缩性的原因,我希望有一个包含从 Buildable 继承的类的数组。我尝试了一些东西,但显然它不起作用:class[] inheritTypes = { House, Road }
我也尝试过使用 Types[] buildableTypes = { typeOf(Hosue), typeOf(Road) } 类型的数组,但我无法比较类型,因为 typeOf(myBuildables[i]) 总是返回可构建类型。
【问题讨论】:
-
试试
Buildable[]? -
应该如何使用?
-
你要处理多少个可构建继承者?只是一个警告:你不会绕过类型检查。充其量你可以得到别人的代码为你做这项工作。
-
有一个实际上相同的问题,但对于 Winforms。抽象类是“抽象问题”。我可以将您链接到我的答案:stackoverflow.com/a/59116927/3346583 |正确答案实际上取决于您将要对这些实例做什么,一旦您知道它们的类型是什么。
-
好的。即使是改进的开关,20 也确实太多了。这将需要
Dictionary<type, delegate>。再次强调一下:这真的取决于你在施放它们之后打算对这些实例做什么。 |像进展蜱一样的东西?这可以通过他们从 Buildable 继承或从接口获取的函数来完成。画?同样的交易。在没有向我们展示你打算如何处理至少这两个的情况下,这就是我现在能给你的所有信息。
标签: c# unity3d inheritance types compare