강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

윤코코님의 프로필 이미지
윤코코

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘

BFS를 이용한 길찾기 구현

NullReferenceException 예외) 같은 실수하시는분 계실까봐 남겨요

작성

·

8

0

 while (parent[y, x].Y != y || parent[y, x].X != x)

이 while 문에서 NullReferenceException 예외가 걸리는경우.

Initialize 함수를 확인해보시길 바랍니다.

public void Initialize(int PosY, int PosX, Board board)
{

    PosY = PosY;
    PosX = PosX;

    _board = board;
    BFS();
}

이부분을 이렇게 수정하시거나

        public void Initialize(int posY, int posX, Board board)
        {
            PosY = posY;
            PosX = posX;
            _board = board;

            BFS();
        }

또는 this. 으로 수정해도 되네요.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 윤코코님.

NullReferenceException 관련 오류는 코드에서 객체나 변수가 초기화되지 않은 상태에서 접근할 때 발생하는 문제입니다. 질문하신 내용에서는 Initialize 메서드의 매개변수 이름과 인스턴스 변수의 이름이 같아서, Initialize 메소드 내부에서 전달받은 매개변수가 그대로 사용되지 않고 있음을 알 수 있습니다.

귀하의 사례에서 Initialize 메서드 내에서 값을 올바르게 할당하기 위해서는, 전달받은 매개변수 posYposX를 정확히 인스턴스 변수 PosY, PosX에 할당해야 합니다. 이를 위해 변수 할당 시 this 키워드를 사용하거나 매개변수 이름과 인스턴스 변수 이름을 다르게 설정해주는 것이 좋습니다. 수정된 코드를 예시로 보여드린 부분 처럼 변경하시면 문제가 해결됩니다.

관련해서 유사한 질문이 있었고 해결책이 제시된 다른 게시물을 참조하실 수 있습니다:
- BFS함수의 두 번째 while문 조건에 대하여

여기서 지식공유자께서 while 루프 내의 참조 상태 문제를 다루셨으며, != 연산자에 대한 참조 비교 문제에 대해 자세히 설명해주셨습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

윤코코님의 프로필 이미지
윤코코

작성한 질문수

질문하기