2013-09-04 4 views
0

개체를 ArrayList에 추가하는 데 문제가 있습니다. ArrayController에 KeyboardController() 및 GamepadController()를 추가하려고하면 ControllerList가 필드이지만 유형으로 사용 중입니다. 이 두 클래스 모두 IController 인터페이스를 구현합니다. 또한 KC()와 GC() 모두 반환 유형이 있어야한다고 들었습니다. 누구든지이 문제의 원인을 알려주시겠습니까? 이 일을하는 더 적절한 방법이 있습니까?C#/XNA 왜 배열 목록에 추가 할 수 없습니까?

// 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); 
} 

이 코드의 특정 부분은 강사 나에게 제공하고 나는 그것이 제대로 작동되지 않는 이유에 불분명입니다했다.

답변

3

를 초기화하지에

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

또한 당신이 항목을 추가 할 수 없습니다)를 메서드 본문 외부에 배치합니다. 이것은 작동하지 않습니다.

당신은 컬렉션 이니셜 라이저 구문

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

를 사용하거나 클래스의 생성자에서 초기화를해야 하나 있습니다. 당신이하지 않은 경우

또한, ArrayList를 사용하지 마십시오. 대신 List<IController>을 사용하십시오.

+0

List가 ArrayList를 사용한다는 것을 읽었지만, 강사가 주어진 코드이기 때문에 보관했습니다. 빠른 응답에 감사드립니다. –

3

당신은 클래스 생성자 또는 방법에 항목 추가 코드 라인을 넣어해야합니다. (null) ArrayList를, 당신은 단지 ArrayListControllerList를 선언 초기화되지하지만 당신은 비 초기화 코드 (ArrayList.Add에 대한 호출을 실행하기 위해 노력하고있다

+2

OP에는 * compilation * 오류가 있습니다.이 대답은 해결할 수 없습니다. 오류가 NullReferenceException이지만 현재보고 된 오류에 적절하지 않은 경우 적절할 것입니다. –

+0

@JonSkeet 업데이트 답변. 지적 해 주셔서 감사합니다. – Damith

관련 문제