class Building {
}
class Home: Building {
}
private List<Building> buildings;
public T[] FindBuildings<T>() {
return buildings.FindAll(x => x is T).ToArray() as T[];
}
我有一个列表来保存地图上的所有建筑物,并编写一个函数来查找特定的建筑物类型。我想FindBuildings<Home>()
用来获取一个包含地图上所有住宅建筑的数组,但是当我运行代码时,我发现该函数总是返回 null,似乎as
不起作用。这是否意味着as
不能使用泛型类型参数?
所以,我改变了代码:
private List<Building> buildings;
public Building[] FindBuildings<T>() {
return buildings.FindAll(x => x is T).ToArray();
}
用于FindBuildings<Home>() as Home[]
访问地图上的房屋建筑。但是......它仍然为空。
我看到了一个 Unity3d 的例子,告诉我使用 'as' 来转换数组类型,为什么我失败了?
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
void OnMouseDown() {
HingeJoint[] hinges = FindObjectsOfType(typeof(HingeJoint)) as HingeJoint[];
foreach (HingeJoint hinge in hinges) {
hinge.useSpring = false;
}
}
}