0

我在将对象添加到 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);
}

这个特定的代码部分是由讲师提供给我的,我不清楚它为什么不能正常运行。

4

2 回答 2

3

ArrayList.Add您正在尝试在方法主体之外执行非初始化程序代码(对 的调用)。这行不通。

您必须使用集合初始值设定项语法

ArrayList ControllerList = new ArrayList
                               {
                                   new KeyboardController(),
                                   new GamepadController()
                               };

或在类的构造函数中进行初始化。

另外,非必要时不要使用ArrayList。改为使用List<IController>

于 2013-09-04T15:11:43.343 回答
2

您需要将项目添加代码行放在类构造函数或方法中。

ControllerList = new ArrayList(); 
ControllerList.Add(new KeyboardController());

而且您不能将项目添加到未初始化的 ( null) ArrayList 中,您只能声明ControllerListArrayList但未初始化

于 2013-09-04T15:05:56.763 回答