我在向ArrayList添加对象时遇到了一些麻烦。当试图将KeyboardController()和GamepadController()添加到ArrayList时,我被告知ControllerList是一个字段,但它被用作一个类型。这两个类都实现了接口IController。此外,我被告知KC()和GC()必须具有返回类型。有人能告诉我是什么导致了这个问题。有没有更合适的方法呢?
// Initialization
ArrayList ControllerList;
ControllerList.Add(new KeyboardController()); //error
ControllerList.Add(new GamepadController()); //error
IAnimatedSprite MarioSprite = new SmallMarioRunningRightSprite();
protected override void Update(GameTime gameTime)
{
foreach(IController Controller in ControllerList)
{
Controller.Update();
}
MarioSprite.Update();
base.Update(gameTime);
}
这段特殊的代码是由教师提供给我的,我不清楚它为什么运作不正常。
答案 0 :(得分:3)
您需要在项类构造函数或方法中添加代码行。
ControllerList = new ArrayList();
ControllerList.Add(new KeyboardController());
并且您也无法将项目添加到未初始化(null
)ArrayList,您只需将ControllerList
声明为ArrayList
但未初始化
答案 1 :(得分:3)
您正在尝试在方法体外执行非初始化程序代码(对ArrayList.Add
的调用)。这不起作用。
您必须使用集合初始值设定语法
ArrayList ControllerList = new ArrayList
{
new KeyboardController(),
new GamepadController()
};
或在你的类的构造函数中进行初始化。
另外,如果您不需要,请不要使用ArrayList
。请改用List<IController>
。