C#/ XNA为什么我不能添加到数组列表?

时间:2013-09-04 15:04:39

标签: c# arraylist xna

我在向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);
}

这段特殊的代码是由教师提供给我的,我不清楚它为什么运作不正常。

2 个答案:

答案 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>