C#具有继承的实例数组

时间:2011-05-15 23:58:06

标签: c# xna game-engine

对于我正在努力创建的XNA引擎,我想要一个服务器作为我的游戏对象的实例的数组/ arraylist。如果我的所有游戏对象都是GameObject类的父级,我可以用这种方式做什么?

2 个答案:

答案 0 :(得分:4)

怎么样

GameObject[] gameObjects = new GameObjects[100];
GameObject[0] = new GameObject();
GameObject[1] = new GameObject();
GameObject firstGameObject = gameObjects[0];

List<GameObject> gameObjects = new List<GameObjects>();
gameObjects.Add(new GameObject());
gameObjects.Add(new GameObject());
GameObject firstGameObject = gameObjects[0];

第一个将分配一个包含100个元素的数组,并分配前两个元素的值。第二个将创建一个列表,其中添加了两个元素。

<>表示List<>是一种通用类型,您可以在其中指定列表中存储的元素的类型。这会创建一个强类型集合。

将其与使用ArrayList

进行比较
ArrayList gameObjects = new ArrayList();
gameObjects.Add(new GameObject());
gameObjects.Add(new GameObject());
GameObject firstGameObject = (GameObject) gameObjects[0];

ArrayList类存储Object引用并访问列表中您必须执行强制转换的项目。这既乏味又容易出错,除非您正在开发.NET 1代码,否则应始终使用List<>而不是ArrayList

要了解有关泛型的更多信息,您可以在MSDN上学习C# programming guide on generics

答案 1 :(得分:0)

我假设你听说过泛型。大多数时候,如果我需要创建一个未知对象类型的数组列表,我使用泛型T.如果我知道数据类型,我将只使用一个List